Orivel Orivel
Menü öffnen

Neueste Aufgaben und Diskussionen

Durchsuche die neuesten Benchmark-Inhalte für Aufgaben und Diskussionen. Wechsle nach Genre, um gezielt zu vergleichen.

Vergleichsgenres

Modellübersicht

Programmierung

OpenAI GPT-5.6 VS Google Gemini 2.5 Pro

Ratenbegrenzer mit gleitendem Fenster und fairen Mehrmandantenquoten

Implementieren Sie eine wiederverwendbare Rate-Limiter-Bibliothek in einer Sprache Ihrer Wahl (Python, Go, TypeScript, Java oder Rust), die pro Client Anfragenquoten mithilfe eines gleitenden-Fenster-Algorithmus durchsetzt und zusätzlich eine faire Verteilungsrichtlinie über mehrere Mandanten bietet. Funktionale Anforderungen: Bieten Sie eine Klasse oder ein Modul mit einer Methode wie allow(tenant_id, client_id, now_ms), die zurückgibt, ob eine Anfrage erlaubt ist und, falls sie abgelehnt wird, wie viele Millisekunden bis zur nächsten erlaubten Anfrage verbleiben (retry_after_ms). Jeder Client ist auf eine maximale Anzahl von Anfragen innerhalb eines rollenden Zeitfensters beschränkt (zum Beispiel 100 Anfragen pro 60.000 ms). Die Konfiguration muss pro Mandant anpassbar sein. Implementieren Sie ein echtes gleitendes Fenster (gewichtet oder auf Logbasis), nicht ein festes Kalender-Bucket-Fenster, sodass Spitzenlasten über Bucket-Grenzen hinweg korrekt behandelt werden. Fügen Sie eine globale Obergrenze pro Mandant hinzu, sodass alle Clients eines Mandanten zusammen ein mandantenweites Maximum nicht überschreiten können. Wenn der Mandant ausgelastet ist, wird die verbleibende Kapazität fair unter den aktiven Clients verteilt, anstatt von einem Client monopolisiert zu werden. Der Limiter muss unter gleichzeitigen Zugriffen von mehreren Threads oder asynchronen Tasks sicher sein. Der Speicher darf nicht unbegrenzt wachsen: veraltete Client-Zustände müssen im Laufe der Zeit entfernt oder kompaktiert werden. Liefergegenstände: Die vollständige Implementierung mit klarer öffentlicher API und Inline-Dokumentation wichtiger Entscheidungen. Eine kurze Erklärung (in Kommentaren oder einem kurzen Prosatext) des gewählten gleitenden-Fenster-Algorithmus sowie seiner Genauigkeits-/Speicher-Kompromisse. Eine Testsuite, die die unten beschriebenen Kern-Grenzfälle abdeckt. In Code und Tests ausdrücklich zu behandelnde Grenzfälle: Anfragen genau an der Fenstergrenze. Ein Client, der inaktiv wird und nach vollständigem Ablauf des Fensters zurückkehrt. Gleichzeitig eintreffende Anfragen, die auf denselben Client-Zähler rennen. Uhr, die rückwärts läuft, oder doppelte Zeitstempel. Mandantensättigung und faire Neuverteilung unter konkurrierenden Clients. Aussondern veralteter Client-Zustände, ohne aktive Clients zu entfernen. Geben Sie alle Annahmen an, die Sie treffen (Einzelprozess vs. verteilt, Verfügbarkeit einer monotonen Uhr usw.). Wenn Sie einen Einzelprozess annehmen, beschreiben Sie kurz, wie das Design auf eine verteilte Bereitstellung erweitert werden würde.

269
16 Jul 2026 09:49

Programmierung

Anthropic Claude Opus 4.8 VS Google Gemini 2.5 Pro

Atomare JSON-Patch-Anwendung in Python implementieren

Schreiben Sie eine Python-3.11-Implementierung einer Funktion namens apply_json_patch(document, patch), die eine JSON-Patch-ähnliche Sequenz von Operationen auf einen JSON-kompatiblen Wert anwendet und den gepatchten Wert zurückgibt. Das Eingabedokument kann jede Kombination aus dict, list, str, int, float, bool und None sein. Der Patch ist eine Liste von Operations-Dicts. Die Implementierung darf das ursprüngliche Dokument oder irgendein von ihm erreichbares verschachteltes Objekt nicht verändern. Wenn irgendeine Operation ungültig ist, muss die Funktion eine benutzerdefinierte Ausnahme-Klasse namens JsonPatchError auslösen und das ursprüngliche Dokument unverändert lassen. Unterstützte Operationen sind add, remove, replace, move, copy und test. Verwenden Sie JSON Pointer-Pfade mit durch Schrägstriche getrennten Tokens, wobei der leere String das gesamte Dokument identifiziert, Tokens ~1 als / und ~0 als ~ dekodieren und jede andere Verwendung von ~ ungültig ist. Für Objekte ist ein Pfad-Token ein Schlüssel. Für Arrays muss ein Pfad-Token eine nicht-negative ganze Zahl ohne führende Nullen sein, mit Ausnahme des einzelnen Tokens 0; nur für add darf das letzte Token - zum Anhängen sein. Die add-Operation fügt in Arrays an einem Index von 0 bis len(array) ein, hängt für - an, setzt einen Objekt-Schlüssel oder ersetzt das gesamte Dokument, wenn der Pfad leer ist. Die remove-Operation verlangt, dass das Ziel existiert, und löscht es. Die replace-Operation verlangt, dass das Ziel existiert, und ersetzt es. Die move-Operation verlangt from und path, entfernt den Wert bei from und fügt ihn bei path hinzu, und muss das Verschieben eines Wertes in einen seiner eigenen Nachkommen ablehnen. Die copy-Operation verlangt from und path und kopiert den Quellwert tief nach Ziel. Die test-Operation verlangt value und ist nur erfolgreich, wenn das aktuelle Ziel tiefengleich zu value ist, einschließlich normaler Python-Gleichheit für Zahlen und exakter Gleichheit für Strings, Booleans und None. Jedes Operations-Dict muss genau die für diese Operation erforderlichen Felder plus das Feld op enthalten; unbekannte Felder oder fehlende Felder sind Fehler. Die Funktion sollte deterministisch, angemessen effizient und nur von der Python-Standardbibliothek abhängig sein. Fügen Sie alle notwendigen Hilfsfunktionen oder -klassen hinzu. Schreiben Sie kein Kommandozeilenprogramm und verwenden Sie keine externen Pakete.

343
15 Jun 2026 09:43

Programmierung

Google Gemini 2.5 Pro VS OpenAI GPT-5.2

Implementieren Sie einen nebenläufigen Ratenbegrenzer mit gleitendem Fenster und Prioritätswarteschlangen

Entwerfen und implementieren Sie einen Thread-sicheren Ratenbegrenzer in Python, der folgende Funktionen unterstützt: Gleitende Fenster-Ratenbegrenzung: Anstatt feste Zeitfenster zu verwenden, implementieren Sie einen echten gleitenden Fenster-Algorithmus. Jeder Client (identifiziert durch einen String-Schlüssel) darf höchstens max_requests Anfragen innerhalb eines beliebigen rollenden Fensters von window_seconds Sekunden stellen. Prioritätsstufen: Jede Anfrage hat eine Prioritätsstufe (Ganzzahl 1-5, wobei 1 die höchste Priorität ist). Wenn das Ratenlimit für einen Client erreicht ist, sollten Anfragen mit niedrigerer Priorität (größere Zahl) zuerst abgelehnt werden. Konkret: Wenn eine neue Anfrage mit Priorität P eintrifft und das Fenster voll ist, sollte der Limiter prüfen, ob irgendeine Anfrage im aktuellen Fenster eine streng niedrigere Priorität (größere Zahl) als P hat. Falls ja, wird der Platz der niedrigstpriorisierten (höchstnummerierten) Anfrage "widerrufen" und die neue, höher priorisierte Anfrage zugelassen. Die widerrufene Anfrage sollte protokolliert werden, damit sie gemeldet werden kann. Existiert keine niedrigere Priorität zum Widerruf, wird die neue Anfrage abgelehnt. Burst-Zulage: Jeder Client kann optional eine Burst-Zulage burst haben (Standard 0). Diese erlaubt bis zu burst zusätzliche Anfragen über max_requests hinaus in einem Fenster, aber nur, wenn seit der ersten Anfrage des Clients im aktuellen Fenster mindestens die Hälfte der Fensterdauer vergangen ist. Thread-Sicherheit: Der Ratenbegrenzer muss sicher aus mehreren Threads gleichzeitig verwendbar sein. Demonstrieren Sie dies mit einem Testszenario. Statistiken: Der Limiter muss pro Client Statistiken führen: insgesamt zugelassene Anfragen, insgesamt abgelehnte Anfragen, insgesamt widerrufene Anfragen (durch Anfragen mit höherer Priorität verdrängt) und die aktuelle Fensterauslastung (als Float 0.0 bis 1.0). Implementieren Sie die folgende Schnittstelle: class RateLimiter: def __init__(self, max_requests: int, window_seconds: float, default_burst: int = 0): ... def set_client_burst(self, client_id: str, burst: int) -> None: """Überschreibe die Burst-Zulage für einen bestimmten Client.""" ... def allow(self, client_id: str, priority: int = 3, timestamp: float = None) -> bool: """ Prüft, ob eine Anfrage zugelassen wird. Falls timestamp None ist, verwende die aktuelle Zeit. Gibt True zurück, wenn die Anfrage zugelassen wird, False wenn sie abgelehnt wird. """ ... def get_stats(self, client_id: str) -> dict: """ Gibt ein dict mit den Schlüsseln zurück: 'admitted', 'rejected', 'revoked', 'utilization' """ ... def get_revoked_log(self, client_id: str) -> list: """ Gibt eine Liste von (timestamp, priority)-Tupeln für widerrufene Anfragen für den gegebenen Client in chronologischer Reihenfolge zurück. """ ... Liefern Sie eine vollständige, ausführbare Implementierung zusammen mit einem Demonstrationsskript, das: Einen Limiter mit max_requests=5, window_seconds=10.0, default_burst=2 erstellt Eine Sequenz von Anfragen von zwei Clients mit variierenden Prioritäten und Zeitstempeln simuliert, die alle Funktionen abdeckt (Ablauf im gleitenden Fenster, Prioritäts-Widerruf, Burst-Aktivierung und Ablehnung) Am Ende die Statistiken und die Widerrufsprotokolle für jeden Client ausgibt Einen kurzen Multithread-Test enthält mit mindestens 4 Threads, die gleichzeitig Anfragen stellen Stellen Sie sicher, dass Randfälle behandelt werden wie: Validierung der Prioritätswerte (muss 1-5 sein) Anfragen, die genau an den Fenstergrenzen ankommen Mehrfache Widerrufe in Folge Burst-Zulage, die präzise beim Halbfenstermark aktiviert Leere oder unbekannte Client-IDs in Statistikabfragen

617
19 Mar 2026 14:46

Programmierung

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

Implementieren Sie einen versionierten Schlüssel-Wert-Speicher mit historischen Abfragen

Schreiben Sie Code, der einen im Speicher arbeitenden versionierten Schlüssel-Wert-Speicher implementiert, der historische Lesezugriffe unterstützt. Der Speicher beginnt leer und verarbeitet eine Sequenz von Befehlen. Jeder erfolgreiche mutierende Befehl erzeugt genau eine neue globale Versionsnummer, beginnend bei 1. Nur schreibfreie Befehle dürfen keine Version erzeugen. Schlüssel und Werte sind case-sensitve Strings ohne Leerzeichen. Versionen sind positive ganze Zahlen. Commands: SET key value Create or overwrite key with value. DELETE key Remove key if it exists. GET key Return the current value for key, or NULL if the key does not exist. GET_VERSION key version Return the value associated with key immediately after the specified global version was created, or NULL if the key did not exist at that version. If version is greater than the latest existing version, treat it as invalid and return INVALID_VERSION. HISTORY key Return all historical states for the key in increasing version order, including deletions, formatted as version:value pairs separated by commas. Use NULL for deleted or absent-after-mutation states. If the key has never been affected by any mutating command, return EMPTY. Input format: The first line contains an integer N, the number of commands. The next N lines each contain one command. Output format: For every GET, GET_VERSION, and HISTORY command, print one line with the result. Behavior details and edge cases: Every SET always creates a new version, even if the value is unchanged. Every DELETE always creates a new version, even if the key does not exist. Versions are global across all keys, not per key. HISTORY for a key should include only versions where that key was directly affected by SET or DELETE. If a key was deleted and later set again, both events must appear in HISTORY. Efficiency matters: assume up to 200000 commands, with many historical queries. Your solution should read from standard input and write to standard output. Include the full working program in one file. You may use any mainstream programming language, but the code should be complete and executable as written.

612
18 Mar 2026 22:33

Programmierung

OpenAI GPT-5.2 VS Google Gemini 2.5 Pro

Implementierung eines Least Recently Used (LRU) Caches

Implementieren Sie eine LRU (Least Recently Used) Cache-Datenstruktur in Python. Ihre Implementierung sollte eine Klasse namens LRUCache sein, die die folgenden Operationen unterstützt: __init__(self, capacity: int) — Initialisieren Sie den Cache mit einer positiven Ganzzahl-Kapazität. get(self, key: int) -> int — Geben Sie den Wert zurück, der dem Schlüssel zugeordnet ist, falls er im Cache vorhanden ist, andernfalls geben Sie -1 zurück. Der Zugriff auf einen Schlüssel zählt als "Verwendung". put(self, key: int, value: int) -> None — Fügen Sie das Schlüssel-Wert-Paar ein oder aktualisieren Sie es. Wenn der Cache nach der Einfügung seine Kapazität überschreitet, verwerfen Sie den am wenigsten zuletzt verwendeten Schlüssel. Sowohl get als auch put müssen in einer durchschnittlichen Zeitkomplexität von O(1) laufen. Stellen Sie die vollständige Klassenimplementierung bereit. Demonstrieren Sie dann seine Korrektheit, indem Sie die Ausgabe der folgenden Sequenz von Operationen zeigen: cache = LRUCache(2) cache.put(1, 10) cache.put(2, 20) print(cache.get(1)) # Erwartet: 10 cache.put(3, 30) # Verwirft Schlüssel 2 print(cache.get(2)) # Erwartet: -1 cache.put(4, 40) # Verwirft Schlüssel 1 print(cache.get(1)) # Erwartet: -1 print(cache.get(3)) # Erwartet: 30 print(cache.get(4)) # Erwartet: 40 Erklären Sie kurz, wie Ihre Implementierung eine O(1) Zeitkomplexität für beide Operationen erreicht.

630
09 Mar 2026 03:54

Verwandte Links

X f L