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

Anthropic Claude Haiku 4.5 VS OpenAI GPT-5.2

Erweiterter Logdatei-Parser für ein benutzerdefiniertes Format

Schreiben Sie eine Python-Funktion `parse_log(log_content: str) -> list`, die eine Logdatei mit einem benutzerdefinierten Format parst. Die Funktion soll den Loginhalt als einen einzigen mehrzeiligen String entgegennehmen und eine Liste von Dictionaries zurückgeben, wobei jedes Dictionary eine erfolgreich abgeschlossene Transaktion darstellt. **Regeln für das Log-Format:** 1. **`START <transaction_id> <timestamp>`**: Markiert den Beginn einer Transaktion. `transaction_id` ist ein String ohne Leerzeichen. `timestamp` ist ein ISO-8601-formatiertes String. 2. **`END <transaction_id> <status> <timestamp>`**: Markiert das Ende einer Transaktion. Die `transaction_id` muss mit einer offenen Transaktion übereinstimmen. `status` ist ein einzelnes Wort (z. B. `SUCCESS`, `FAIL`). 3. **`EVENT <key1>=<value1> <key2>="<value with spaces>" ...`**: Stellt ein Ereignis innerhalb der aktuell aktiven Transaktion dar. Es besteht aus einem oder mehreren Schlüssel-Wert-Paaren. Werte, die Leerzeichen enthalten, müssen in doppelte Anführungszeichen eingeschlossen sein. 4. **`COMMENT # <any text>`**: Eine Kommentarzeile, die ignoriert werden soll. **Verarbeitungslogik:** * Die Funktion soll Zeilen nacheinander verarbeiten. * Eine `EVENT`-Zeile gehört zur zuletzt gestarteten Transaktion, die noch nicht beendet wurde. * Eine Transaktion gilt nur dann als abgeschlossen und gültig, wenn sie eine passende `START`- und `END`-Zeile mit derselben `transaction_id` hat. * Die Ausgabe soll eine Liste von Dictionaries sein. Jedes Dictionary repräsentiert eine abgeschlossene Transaktion und muss folgende Schlüssel haben: * `transaction_id` (string) * `start_time` (string) * `end_time` (string) * `status` (string) * `events` (eine Liste von Dictionaries, wobei jedes innere Dictionary die Schlüssel-Wert-Paare einer `EVENT`-Zeile repräsentiert). **Fehlerbehandlung und Randfälle:** * Ignorieren Sie alle `COMMENT`-Zeilen, Leerzeilen oder Zeilen, die fehlerhaft sind und nicht den angegebenen Formaten entsprechen. * Ignorieren Sie jedes `EVENT`, das außerhalb einer aktiven Transaktion auftritt (d. h. vor dem ersten `START` oder nachdem eine Transaktion geschlossen wurde). * Wenn eine neue `START`-Zeile erscheint, bevor die vorherige Transaktion mit einem `END` geschlossen wurde, gilt die vorherige Transaktion als "abandoned" (verlassen) und sollte verworfen werden. Die neue `START`-Zeile beginnt eine neue Transaktion. * Jede Transaktion, die am Ende der Logdatei noch offen ist, gilt ebenfalls als "abandoned" und sollte nicht in die endgültige Ausgabe aufgenommen werden.

41
23 Mar 2026 08:42

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

50
19 Mar 2026 14:46

Programmierung

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Implementieren Sie einen sperrfreien nebenläufigen LRU-Cache

Designen und implementieren Sie einen threadsicheren LRU- (Least Recently Used) Cache in Python, der gleichzeitige Lese- und Schreibzugriffe unterstützt, ohne für jede Operation ein globales Lock zu verwenden. Ihre Implementierung muss die folgenden Anforderungen erfüllen: 1. Der Cache hat eine feste maximale Kapazität, die zur Erstellungszeit angegeben wird. 2. Er unterstützt drei Operationen: - get(key): Gibt den mit dem Schlüssel assoziierten Wert zurück oder None, wenn der Schlüssel nicht vorhanden ist. Der Zugriff auf einen Schlüssel muss ihn als zuletzt verwendet markieren. - put(key, value): Fügt das Schlüssel-Wert-Paar ein oder aktualisiert es. Wenn der Cache voll ist und ein neuer Schlüssel eingefügt wird, muss der am wenigsten kürzlich verwendete Eintrag entfernt werden. - delete(key): Entfernt den Schlüssel aus dem Cache, falls vorhanden. Gibt True zurück, wenn der Schlüssel gefunden und entfernt wurde, andernfalls False. 3. Der Cache muss sicher von mehreren Threads gleichzeitig verwendbar sein. Gleichzeitige get-Operationen auf verschiedenen Schlüsseln sollten sich gegenseitig nicht blockieren. Sie sollten die Kontention minimieren — ein einzelnes grobgranulares Lock um alles herum ist nicht akzeptabel. 4. Die Eviktionsstrategie muss strikt LRU sein: Der Eintrag, der am wenigsten kürzlich (durch get oder put) benutzt wurde, muss evakuiert werden. 5. Behandeln Sie Randfälle: Kapazität von 1, schnelle gleichzeitige puts, die Eviktionen auslösen, sich überlappende get/put/delete-Operationen auf demselben Schlüssel aus verschiedenen Threads, und null- oder negative Kapazität (raise ValueError). Stellen Sie Ihre vollständige Implementierung als ein einzelnes Python-Modul bereit. Fügen Sie eine kurze Erklärung Ihrer nebenläufigen Strategie und warum sie die Korrektheit wahrt bei. Fügen Sie außerdem eine kurze Demonstration (in einem main-Block oder einer Testfunktion) hinzu, die mehrere Threads erzeugt, die gemischte get/put/delete-Operationen ausführen, und die versichert, dass der Cache niemals seine Kapazität überschreitet und keine Datenkorruption auftritt.

64
19 Mar 2026 11:51

Programmierung

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implementieren Sie eine sperrfreie konkurrierende Skip-Liste mit Bereichsabfragen

Entwerfen und implementieren Sie eine nebenläufige Skip-Liste in einer von Ihnen gewählten Sprache (C++, Java, Rust, Go oder Python), die die folgenden Operationen unterstützt: 1. **insert(key, value)** – Fügen Sie ein Schlüssel-Wert-Paar ein. Falls der Schlüssel bereits existiert, aktualisieren Sie den Wert atomar. Gibt true zurück, wenn ein neuer Schlüssel eingefügt wurde, false, wenn aktualisiert wurde. 2. **remove(key)** – Löschen Sie das Schlüssel-Wert-Paar logisch. Gibt true zurück, wenn der Schlüssel gefunden und entfernt wurde, sonst false. 3. **find(key)** – Geben Sie den dem Schlüssel zugeordneten Wert zurück oder zeigen Sie das Fehlen an. 4. **range_query(low, high)** – Geben Sie alle Schlüssel-Wert-Paare zurück, für die low <= key <= high gilt, als Liste nach Schlüssel sortiert. Das Ergebnis muss ein konsistenter Snapshot sein: Es darf keine Schlüssel enthalten, die niemals gleichzeitig während der Ausführung der Operation vorhanden waren. 5. **size()** – Geben Sie die ungefähre Anzahl aktiver (nicht gelöschter) Elemente zurück. Anforderungen und Einschränkungen: - Die Skip-Liste muss sicher für die gleichzeitige Verwendung durch mehrere Threads sein, die beliebige Kombinationen der oben genannten Operationen gleichzeitig ausführen, ohne ein einzelnes globales Lock. Sie können feinmaschige Sperren, sperrfreie Techniken (CAS) oder eine Kombination verwenden. - Lazy Deletion ist akzeptabel: Knoten können vor der physischen Entfernung logisch als gelöscht markiert werden. - Die probabilistische Level-Generierung sollte eine Standard-Geometrische Verteilung mit p=0.5 und einem maximalen Level von 32 verwenden. - Schlüssel sind 64-Bit-Ganzzahlen; Werte sind Strings. - Berücksichtigen Sie die korrekte Speicherverwaltung. Wenn Sie eine Sprache ohne Garbage Collection verwenden, erklären oder implementieren Sie Ihre Reclamationsstrategie (z. B. epoch-based reclamation, hazard pointers). Abgaben: 1. Vollständiger, kompilierbarer/ausführbarer Quellcode mit Kommentaren, die Ihre Nebenläufigkeitsstrategie erklären. 2. Ein Test oder eine Demonstration, die mehrere Threads startet, die gleichzeitig Inserts, Deletes, Finds und Range Queries ausführen, und die die Korrektheit validiert (z. B. keine verlorenen Updates, keine Phantom-Leses in Bereichsabfragen, keine Abstürze). 3. Ein kurzer Analyseabschnitt (als Kommentare oder Docstring), der Folgendes diskutiert: - Die Linearizability- (oder Snapshot-Isolation-)Garantien, die Ihre Implementierung bietet. - Die erwartete Zeitkomplexität jeder Operation. - Bekannte Einschränkungen oder mögliche ABA-Probleme und wie Sie diese adressieren. Ihre Lösung wird hinsichtlich Korrektheit unter Nebenläufigkeit, Codeklarheit, Robustheit der Nebenläufigkeitsstrategie, Qualität des Snapshot-Mechanismus für Bereichsabfragen und Gründlichkeit der Analyse bewertet.

61 1
18 Mar 2026 22:05

Programmierung

OpenAI GPT-5.2 VS Google Gemini 2.5 Flash

Implementierung eines Least Recently Used (LRU) Caches

Implementieren Sie eine LRU (Least Recently Used) Cache-Klasse in Python, die die folgenden Operationen unterstützt: 1. `LRUCache(capacity)` — Initialisieren Sie den Cache mit einer positiven Ganzzahlkapazität. 2. `get(key)` — Geben Sie den Wert zurück, der dem Schlüssel zugeordnet ist, wenn er im Cache vorhanden ist, andernfalls geben Sie -1 zurück. Der Zugriff auf einen Schlüssel markiert ihn als kürzlich verwendet. 3. `put(key, value)` — Fügen Sie ein Schlüssel-Wert-Paar ein oder aktualisieren Sie es. Wenn der Cache nach dem Einfügen seine Kapazität überschreitet, verwerfen Sie den am wenigsten kürzlich verwendeten Schlüssel. Sowohl `get` als auch `put` müssen eine durchschnittliche Zeitkomplexität von O(1) aufweisen. Stellen Sie eine vollständige, in sich geschlossene Python-Implementierung bereit. Verwenden Sie nicht `functools.lru_cache` oder `collections.OrderedDict`. Sie sollten die zugrunde liegende Datenstruktur selbst implementieren (z. B. unter Verwendung einer doppelt verketteten Liste und einer Hash-Map). Fügen Sie nach Ihrer Klassendefinition eine kurze Demonstration ein, die einen LRUCache mit der Kapazität 2 erstellt und die folgenden Operationen ausführt, wobei das Ergebnis jedes `get` ausgegeben wird: ``` 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 ```

86
10 Mar 2026 15:38

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