Orivel Orivel
Abrir menu

Ultimas tareas y discusiones

Explora el contenido benchmark mas reciente de tareas y discusiones. Filtra por genero para centrarte en lo que quieres comparar.

Generos de Comparacion

Lista de Modelos

Programación

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5 mini

Implementar un limitador de tasa concurrente con ventana deslizante y colas de prioridad

Diseña e implementa un limitador de tasa (rate limiter) en Python que sea seguro para hilos (thread-safe) y que admita las siguientes características: 1. **Limitación de tasa con ventana deslizante**: El limitador debe usar un algoritmo de ventana deslizante (no ventanas fijas) para hacer el seguimiento del número de solicitudes. Dado un máximo de `max_requests` permitido dentro de un periodo de `window_seconds` segundos, debe determinar con precisión si una nueva solicitud está permitida en cualquier momento. 2. **Múltiples niveles**: El limitador debe soportar múltiples niveles con nombre (por ejemplo, \"free\", \"standard\", \"premium\"), cada uno con su propia configuración de `max_requests` y `window_seconds`. Los clientes se asignan a un nivel al registrarse. 3. **Cola de prioridad para solicitudes diferidas**: Cuando una solicitud queda limitada por la tasa, en lugar de rechazarla simplemente, el limitador debe encolarla en una cola de prioridad por nivel. Cada solicitud tiene una prioridad entera (número menor = mayor prioridad). El limitador debe proporcionar un método que, cuando haya capacidad disponible, desencole y procese la solicitud en espera de mayor prioridad para un cliente dado. 4. **Seguridad para hilos**: Todas las operaciones (`allow_request`, `enqueue`, `dequeue`, `register_client`) deben ser seguras para ser llamadas concurrentemente desde múltiples hilos. 5. **Limpieza**: Proporciona un método para eliminar los datos de seguimiento expirados de clientes que no hayan realizado solicitudes en los últimos `cleanup_threshold_seconds` (configurable). Tu implementación debe incluir: - Una clase `RateLimiter` con la interfaz descrita. - Un dataclass `Request` o namedtuple que contenga como mínimo: `client_id`, `timestamp`, `priority` y `payload`. - Manejo adecuado de casos límite: registro duplicado de clientes, solicitudes para clientes no registrados, colas de prioridad vacías, modificaciones concurrentes y problemas de precisión del reloj. Asimismo, escribe un script de demostración (en el bloque `if __name__ == "__main__"`) que: - Crea un limitador de tasa con al menos dos niveles. - Registra varios clientes. - Simula una ráfaga de solicitudes desde múltiples hilos, mostrando que algunas son permitidas y otras quedan encoladas. - Muestra cómo las solicitudes diferidas se procesan cuando se libera capacidad. - Imprime una salida clara que muestre la secuencia de eventos. Explica tus decisiones de diseño en comentarios, especialmente en lo relativo a tu implementación de la ventana deslizante, la elección de primitivos de sincronización y los compromisos que hayas hecho entre precisión y rendimiento.

50
21 Mar 2026 08:40

Programación

Google Gemini 2.5 Flash-Lite VS OpenAI GPT-5.2

Implementar una caché LRU concurrente sin bloqueo

Diseña e implementa una caché LRU (Least Recently Used) en Python que sea segura para hilos (thread-safe) y que admita lecturas y escrituras concurrentes sin usar un bloqueo global para cada operación. Tu implementación debe satisfacer los siguientes requisitos: 1. La caché tiene una capacidad máxima fija especificada en el momento de la construcción. 2. Soporta tres operaciones: - get(key): Devuelve el valor asociado con la clave, o None si la clave no está presente. Acceder a una clave debe marcarla como la más recientemente usada. - put(key, value): Inserta o actualiza el par clave-valor. Si la caché está a capacidad y se inserta una clave nueva, debe expulsarse la entrada menos recientemente usada. - delete(key): Elimina la clave de la caché si está presente. Devuelve True si la clave se encontró y se eliminó, False en caso contrario. 3. La caché debe ser segura para su uso desde múltiples hilos simultáneamente. Las operaciones get concurrentes sobre claves distintas no deberían bloquearse entre sí. Debes minimizar la contención: un único bloqueo de grano grueso alrededor de todo no es aceptable. 4. La política de expulsión debe ser estrictamente LRU: la entrada que haya sido accedida (vía get o put) hace más tiempo debe ser la que se expulse. 5. Maneja casos límite: capacidad de 1, put concurrentes rápidos que desencadenen expulsiones, get/put/delete entrelazados sobre la misma clave desde distintos hilos, y capacidad cero o negativa (lanza ValueError). Proporciona tu implementación completa como un único módulo Python. Incluye una breve explicación de tu estrategia de concurrencia y por qué preserva la corrección. También incluye una breve demostración (en un bloque main o una función de prueba) que genere múltiples hilos que realicen operaciones mixtas get/put/delete y que verifique (mediante aserciones) que la caché nunca supera su capacidad y que no se produce corrupción de datos.

64
19 Mar 2026 11:51

Programación

OpenAI GPT-5 mini VS Google Gemini 2.5 Flash-Lite

Implementar una caché LRU (Least Recently Used)

Implementa una estructura de datos de caché LRU (Least Recently Used) en Python que admita las siguientes operaciones, cada una con complejidad temporal promedio O(1): 1. `get(key)` — Devuelve el valor asociado con la clave si existe en la caché; de lo contrario, devuelve -1. Acceder a una clave la marca como recientemente usada. 2. `put(key, value)` — Inserta o actualiza el par clave-valor. Si la caché ha alcanzado su capacidad, expulsa el elemento menos recientemente usado antes de insertar el nuevo. Tu implementación debe ser una clase llamada `LRUCache` con la siguiente interfaz: ``` cache = LRUCache(capacity) cache.put(key, value) result = cache.get(key) ``` Demuestra tu implementación con la siguiente secuencia de prueba: ``` cache = LRUCache(2) cache.put(1, 10) cache.put(2, 20) print(cache.get(1)) # Expected: 10 cache.put(3, 30) # Evicts key 2 print(cache.get(2)) # Expected: -1 cache.put(4, 40) # Evicts key 1 print(cache.get(1)) # Expected: -1 print(cache.get(3)) # Expected: 30 print(cache.get(4)) # Expected: 40 ``` Requisitos: - NO uses `functools.lru_cache` ni `collections.OrderedDict`. Implementa la estructura subyacente tú mismo. - Usa una combinación de un mapa hash (hash map) y una lista doblemente enlazada (doubly linked list). - Incluye comentarios claros que expliquen tu enfoque. - Maneja casos límite como capacidad 0 o 1. - Proporciona el código completo y ejecutable incluyendo la secuencia de prueba anterior con su salida esperada.

92
12 Mar 2026 19:00

Enlaces relacionados

X f L