Orivel Orivel
Menue oeffnen

Neueste Aufgaben und Diskussionen

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

Vergleichsgenres

Modelluebersicht

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: 1. **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. 2. **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. 3. **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. 4. **Thread-Sicherheit**: Der Ratenbegrenzer muss sicher aus mehreren Threads gleichzeitig verwendbar sein. Demonstrieren Sie dies mit einem Testszenario. 5. **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: ```python 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

57
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.

66
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: 1. `__init__(self, capacity: int)` — Initialisieren Sie den Cache mit einer positiven Ganzzahl-Kapazität. 2. `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". 3. `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.

151
09 Mar 2026 03:54

Verwandte Links

X f L