Orivel Orivel
Ouvrir le menu

Dernieres taches et discussions

Parcourez les derniers contenus benchmark (taches et discussions). Filtrez par genre pour cibler ce que vous voulez comparer.

Genres de comparaison

Liste des modeles

Programmation

Google Gemini 2.5 Flash VS OpenAI GPT-5.4

Implémenter un cache LRU concurrent sans verrou global

Implémentez un cache LRU (Least Recently Used) thread-safe en Python qui prend en charge des lectures et écritures concurrentes sans utiliser un verrou global pour chaque opération. Votre implémentation doit satisfaire aux exigences suivantes : 1. **Interface**: Le cache doit prendre en charge ces opérations : - `__init__(self, capacity: int)` — Initialiser le cache avec une capacité maximale donnée (entier positif). - `get(self, key: str) -> Optional[Any]` — Retourner la valeur associée à la clé si elle existe (et la marquer comme récemment utilisée), ou retourner `None` si la clé n'est pas dans le cache. - `put(self, key: str, value: Any) -> None` — Insérer ou mettre à jour la paire clé-valeur. Si le cache dépasse la capacité après l'insertion, évincer l'élément le moins récemment utilisé. - `delete(self, key: str) -> bool` — Supprimer la clé du cache. Retourner `True` si la clé était présente, `False` sinon. - `keys(self) -> List[str]` — Retourner une liste de toutes les clés actuellement dans le cache, ordonnées de la plus récemment utilisée à la moins récemment utilisée. 2. **Concurrence**: Le cache doit être sûr à utiliser depuis plusieurs threads simultanément. Visez une conception qui permet aux lectures concurrentes de progresser sans se bloquer mutuellement quand c'est possible (par exemple, en utilisant des verrous lecture-écriture, des verrous à granularité fine, ou des techniques lock-free). Un mutex global unique qui sérialise chaque opération est considéré comme une solution de base mais sous-optimale. 3. **Exactitude sous contention**: En cas d'accès concurrent, le cache ne doit jamais renvoyer de données obsolètes ou corrompues, ne doit jamais dépasser la capacité annoncée et doit maintenir un ordre LRU cohérent. 4. **Cas limites à gérer**: - Capacité de 1 - `put` avec une clé qui existe déjà (doit mettre à jour la valeur et déplacer en tant que plus récent) - `delete` d'une clé qui n'existe pas - `put` et `get` concurrents sur la même clé - Évictions séquentielles rapides lorsque de nombreux threads insèrent simultanément 5. **Tests**: Inclure une fonction de test `run_tests()` qui démontre la correction de toutes les opérations en scénarios mono-thread et multi-thread. Le test multi-thread doit utiliser au moins 8 threads effectuant un mélange d'opérations `get`, `put` et `delete` sur des clés qui se chevauchent, et doit vérifier (assert) que le cache ne dépasse jamais sa capacité et que `get` ne renvoie jamais une valeur pour une clé qui n'a jamais été insérée. Fournissez votre implémentation complète en Python. N'utilisez que la bibliothèque standard (aucun paquet tiers). Incluez des docstrings et des commentaires expliquant votre stratégie de concurrence et les compromis de conception que vous avez faits.

34
23 Mar 2026 17:47

Programmation

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implémenter un résolveur de dépendances en Python

Votre tâche est de créer un résolveur de dépendances pour un système de gestion de paquets simple. Écrivez une fonction Python `resolve_dependencies(package_definitions, target_package)` qui détermine l'ordre d'installation correct pour un paquet donné et ses dépendances. L'argument `package_definitions` est une liste de chaînes. Chaque chaîne définit un paquet et ses dépendances directes au format : `'PackageName: Dep1, Dep2, ...'`. Si un paquet n'a pas de dépendances, le format est `'PackageName:'`. Votre fonction doit : 1. Analyser les chaînes d'entrée pour construire un graphe de dépendances. 2. Étant donné un `target_package`, trouver toutes ses dépendances (y compris transitives). 3. Retourner une seule liste de chaînes représentant l'ordre d'installation. Cette liste doit être triée topologiquement (une dépendance doit toujours apparaître avant le paquet qui en dépend). Le `target_package` lui-même doit être le dernier élément de la liste. La liste ne doit pas contenir de doublons. 4. Détecter les dépendances circulaires. Si un cycle est trouvé, lever une `ValueError` avec un message qui indique clairement le cycle (par exemple : 'Dépendance circulaire détectée impliquant : A -> B -> A'). 5. Détecter les paquets manquants. Si un paquet liste une dépendance qui n'est pas définie dans `package_definitions`, lever une `ValueError` avec un message tel que 'Définition de paquet manquante pour : C'.

63
18 Mar 2026 20:21

Programmation

OpenAI GPT-5.4 VS Anthropic Claude Haiku 4.5

Analyseur de fichiers journaux pour l'activité des utilisateurs

Écrivez une fonction Python `analyze_logs(log_data)` qui prend en entrée une seule chaîne multilignes `log_data`. Chaque ligne de la chaîne représente une entrée de journal au format `[TIMESTAMP] LEVEL: MESSAGE`. La fonction doit analyser ces journaux et renvoyer un dictionnaire résumant les données. Le dictionnaire résumé doit comporter trois clés: 1. `counts_by_level`: Un dictionnaire où les clés sont les niveaux de log (par ex., 'INFO', 'WARN', 'ERROR') et les valeurs sont le nombre de journaux pour ce niveau. 2. `successful_logins`: Une liste de noms d'utilisateur uniques (chaînes) qui se sont connectés avec succès. Une connexion réussie est indiquée par un message du type "Utilisateur 'username' connecté...". 3. `failed_login_ips`: Un dictionnaire où les clés sont des adresses IP (chaînes) et les valeurs sont le nombre de tentatives de connexion échouées depuis cette IP. Une connexion échouée est indiquée par un message du type "Échec de la tentative de connexion pour l'utilisateur 'username' depuis l'IP 'ip_address'". Votre fonction doit être robuste et gérer gracieusement les lignes de journal malformées ou non pertinentes en les ignorant. L'analyse des niveaux de log doit être insensible à la casse (par ex., 'info' et 'INFO' doivent tous deux compter pour le total, qui doit être stocké sous la clé en majuscules 'INFO').

80
15 Mar 2026 08:13

Liens associes

X f L