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 Flash VS OpenAI GPT-5.4

Implementiere einen sperrfreien konkurrierenden LRU-Cache

Implementiere einen threadsicheren LRU (Least Recently Used) Cache in Python, der gleichzeitig Lese- und Schreibzugriffe unterstützt, ohne für jede Operation einen globalen Lock zu verwenden. Deine Implementierung muss die folgenden Anforderungen erfüllen: 1. **Schnittstelle**: Der Cache muss diese Operationen unterstützen: - `__init__(self, capacity: int)` — Initialisiere den Cache mit einer gegebenen maximalen Kapazität (positive ganze Zahl). - `get(self, key: str) -> Optional[Any]` — Gib den mit dem Schlüssel assoziierten Wert zurück, falls er existiert (und markiere ihn als kürzlich benutzt), oder gib `None` zurück, wenn der Schlüssel nicht im Cache ist. - `put(self, key: str, value: Any) -> None` — Füge das Schlüssel-Wert-Paar ein oder aktualisiere es. Falls der Cache nach der Einfügung die Kapazität überschreitet, entferne das am wenigsten kürzlich verwendete Element. - `delete(self, key: str) -> bool` — Entferne den Schlüssel aus dem Cache. Gib `True` zurück, wenn der Schlüssel vorhanden war, sonst `False`. - `keys(self) -> List[str]` — Gib eine Liste aller Schlüssel zurück, die sich derzeit im Cache befinden, geordnet von am kürzesten zuletzt verwendet (most recently used) bis am längsten nicht verwendet (least recently used). 2. **Nebenläufigkeit**: Der Cache muss sicher von mehreren Threads gleichzeitig verwendet werden können. Ziel ist ein Design, das gleichzeitige Lesezugriffe ermöglicht, ohne dass sie sich gegenseitig blockieren, wenn möglich (z. B. durch Leser-Schreiber-Sperren, feinkörnige Sperren oder sperrfreie Techniken). Ein einzelner globaler Mutex, der jede Operation serialisiert, gilt als Ausgangsbasis, ist aber suboptimal. 3. **Korrektheit unter contention**: Bei gleichzeitigen Zugriffen darf der Cache niemals veraltete oder korruptierte Daten zurückgeben, darf niemals seine angegebene Kapazität überschreiten und muss eine konsistente LRU-Reihenfolge beibehalten. 4. **Randfälle, die behandelt werden müssen**: - Kapazität von 1 - `put` mit einem Schlüssel, der bereits existiert (sollte den Wert aktualisieren und an die Position „am kürzesten zuletzt verwendet“ verschieben) - `delete` eines Schlüssels, der nicht existiert - gleichzeitige `put`- und `get`-Operationen auf demselben Schlüssel - schnelle aufeinanderfolgende Evictions, wenn viele Threads gleichzeitig einfügen 5. **Tests**: Füge eine Testfunktion `run_tests()` hinzu, die die Korrektheit aller Operationen sowohl in Single-Thread- als auch in Multi-Thread-Szenarien demonstriert. Der Multi-Thread-Test sollte mindestens 8 Threads verwenden, die eine Mischung aus `get`, `put` und `delete`-Operationen auf überlappenden Schlüsseln ausführen, und sicherstellen (per Assertions), dass der Cache niemals die Kapazität überschreitet und dass `get` niemals einen Wert für einen Schlüssel zurückgibt, der nie eingefügt wurde. Gib deine vollständige Implementierung in Python an. Verwende nur die Standardbibliothek (keine Drittanbieter-Pakete). Füge Docstrings und Kommentare hinzu, die deine Nebenläufigkeitsstrategie und etwaige Design-Trade-offs erklären.

34
23 Mar 2026 17:47

Programmierung

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implementiere einen Abhängigkeitsauflöser in Python

Du sollst einen Dependency Resolver für ein einfaches Paketverwaltungssystem erstellen. Schreibe eine Python-Funktion `resolve_dependencies(package_definitions, target_package)`, die die korrekte Installationsreihenfolge für ein gegebenes Paket und seine Abhängigkeiten bestimmt. Das Argument `package_definitions` ist eine Liste von Strings. Jeder String definiert ein Paket und seine direkten Abhängigkeiten im Format: `'PackageName: Dep1, Dep2, ...'`. Wenn ein Paket keine Abhängigkeiten hat, lautet das Format `'PackageName:'`. Deine Funktion sollte: 1. Die Eingabestrings parsen, um einen Abhängigkeitsgraphen zu erstellen. 2. Für ein gegebenes `target_package` alle seine Abhängigkeiten (einschließlich transitiver Abhängigkeiten) ermitteln. 3. Eine einzelne Liste von Strings zurückgeben, die die Installationsreihenfolge repräsentiert. Diese Liste muss topologisch sortiert sein (eine Abhängigkeit muss immer vor dem Paket erscheinen, das von ihr abhängt). Das `target_package` selbst sollte das letzte Element in der Liste sein. Die Liste darf keine Duplikate enthalten. 4. Zyklische Abhängigkeiten erkennen. Wird ein Zyklus gefunden, soll eine `ValueError` ausgelöst werden mit einer Nachricht, die den Zyklus klar angibt (z. B. 'Zyklische Abhängigkeit festgestellt, beteiligt: A -> B -> A'). 5. Fehlende Pakete erkennen. Wenn ein Paket eine Abhängigkeit auflistet, die in `package_definitions` nicht definiert ist, soll eine `ValueError` ausgelöst werden mit einer Nachricht wie 'Fehlende Paketdefinition für: C'.

63
18 Mar 2026 20:21

Programmierung

OpenAI GPT-5.4 VS Anthropic Claude Haiku 4.5

Log-Datei-Analysator für Benutzeraktivität

Schreiben Sie eine Python-Funktion `analyze_logs(log_data)`, die eine einzelne mehrzeilige Zeichenkette `log_data` als Eingabe entgegennimmt. Jede Zeile in der Zeichenkette stellt einen Log-Eintrag im Format `[TIMESTAMP] LEVEL: MESSAGE` dar. Die Funktion soll diese Logs parsen und ein Dictionary zurückgeben, das die Daten zusammenfasst. Das Zusammenfassungs-Dictionary sollte drei Schlüssel haben: 1. `counts_by_level`: Ein Dictionary, bei dem die Schlüssel Log-Level sind (z. B. 'INFO', 'WARN', 'ERROR') und die Werte die Anzahl der Logs für dieses Level. 2. `successful_logins`: Eine Liste eindeutiger Benutzernamen (Strings), die sich erfolgreich eingeloggt haben. Ein erfolgreicher Login wird durch eine Nachricht wie "User 'username' logged in..." angezeigt. 3. `failed_login_ips`: Ein Dictionary, bei dem die Schlüssel IP-Adressen (Strings) sind und die Werte die Anzahl fehlgeschlagener Login-Versuche von dieser IP. Ein fehlgeschlagener Login wird durch eine Nachricht wie "Failed login attempt for user 'username' from IP 'ip_address'" angezeigt. Ihre Funktion sollte robust sein und fehlerhafte oder irrelevante Log-Zeilen durch Ignorieren handhaben. Das Parsen der Log-Level sollte nicht zwischen Groß- und Kleinschreibung unterscheiden (z. B. sollten 'info' und 'INFO' beide zur Summe zählen, die unter dem Großbuchstaben-Schlüssel 'INFO' gespeichert werden sollte).

75
15 Mar 2026 08:13

Verwandte Links

X f L