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

Explicación

OpenAI GPT-5.4 VS Google Gemini 2.5 Flash

Explicar el indexado de bases de datos a un desarrollador junior

Eres un ingeniero de software senior que actúa como mentor de un desarrollador junior que tiene aproximadamente seis meses de experiencia escribiendo aplicaciones CRUD básicas con una base de datos relacional (por ejemplo, PostgreSQL o MySQL). Ha observado que algunas de sus consultas son lentas y ha oído que los índices pueden ayudar, pero no entiende cómo funcionan los índices ni cuándo usarlos. Escribe una explicación clara, orientada a la enseñanza, sobre el indexado de bases de datos para este público. Tu explicación debe cubrir: 1. Qué es un índice de base de datos y por qué existe, usando una analogía intuitiva. 2. Cómo funciona un índice B-tree a nivel conceptual (no necesitas entrar en detalles de división de nodos, pero el lector debe entender la estructura básica y por qué acelera las búsquedas). 3. Las compensaciones de agregar índices: cuándo ayudan, cuándo perjudican y los costos involucrados (almacenamiento, rendimiento de escritura, mantenimiento). 4. Orientación práctica sobre cómo decidir qué columnas indexar, incluyendo al menos dos ejemplos concretos de consultas y si un índice ayudaría. 5. Una breve mención de al menos otro tipo de índice más allá del B-tree (por ejemplo, hash, GIN, GiST) y cuándo podría ser preferido. Apunta a un tono alentador y accesible sin resultar condescendiente. Usa ejemplos concretos cuando sea posible. La explicación debe ser lo suficientemente completa como para que el desarrollador junior pueda decidir con confianza si añadir un índice a una tabla después de leerla.

71
18 Mar 2026 23:09

Diseño de sistemas

Google Gemini 2.5 Pro VS OpenAI GPT-5 mini

Diseñar un servicio de acortamiento de URL a gran escala

Se le encomienda diseñar un servicio de acortamiento de URL (similar a bit.ly o tinyurl.com) que debe manejar las siguientes restricciones: 1. El servicio debe admitir 100 millones de nuevos acortamientos de URL por mes. 2. La relación lectura-escritura es 100:1 (es decir, 10.000 millones de redirecciones por mes). 3. Las URL acortadas deben tener como máximo 7 caracteres (alfanuméricos). 4. El sistema debe garantizar que una URL acortada, una vez creada, nunca caduque a menos que el usuario la elimine explícitamente. 5. La latencia de redirección (desde la recepción de la solicitud hasta emitir el HTTP 301/302) debe ser inferior a 10 milisegundos en el percentil 99. 6. El sistema debe permanecer disponible incluso si todo un centro de datos deja de estar en línea. 7. El servicio debe admitir un panel de análisis opcional que muestre recuentos de clics, distribución geográfica y datos de referenciador por URL acortada, pero la analítica no debe degradar el rendimiento de las redirecciones. Proporcione un diseño de sistema integral que aborde: A. Arquitectura de alto nivel: Describa los componentes principales y cómo interactúan. B. Estrategia de generación de URL: Cómo genera códigos cortos únicos, por qué eligió ese enfoque y cómo maneja las colisiones. C. Modelo de datos y almacenamiento: Qué bases de datos o sistemas de almacenamiento usa y por qué. Incluya consideraciones de esquema. D. Optimización del camino de lectura: Cómo alcanza el requisito de latencia para redirecciones a la escala dada. E. Camino de escritura: Cómo se crean y persisten de forma fiable las nuevas URL. F. Estrategia de escalado: Cómo escala horizontalmente el sistema para manejar el crecimiento. G. Confiabilidad y tolerancia a fallos: Cómo maneja fallos de centros de datos, replicación y conmutación por error. H. Canalización de analítica: Cómo recopila, procesa y sirve los datos de analítica sin afectar el camino crítico de redirección. I. Principales compensaciones: Identifique al menos tres compensaciones significativas que haya tomado en su diseño y justifique cada una. Sea específico acerca de tecnologías, protocolos y estimaciones numéricas donde corresponda (p. ej., cálculos de almacenamiento, estimaciones de QPS, tamaños de caché).

59
18 Mar 2026 22:59

Programación

Google Gemini 2.5 Pro VS Anthropic Claude Sonnet 4.6

Implementar un almacén de clave-valor versionado con consultas históricas

Escriba código que implemente un almacén de clave-valor versionado en memoria que soporte lecturas históricas. El almacén comienza vacío y procesa una secuencia de comandos. Cada comando mutador exitoso crea exactamente un nuevo número de versión global, empezando desde 1. Los comandos de solo lectura no deben crear una versión. Las claves y los valores son cadenas sensibles a mayúsculas y minúsculas sin espacios. Las versiones son enteros positivos. 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

Programación

Google Gemini 2.5 Flash VS OpenAI GPT-5.2

Implementar una skip list concurrente sin bloqueo con consultas por rango

Diseña e implementa una estructura de datos skip list concurrente en el lenguaje de tu elección (C++, Java, Rust, Go o Python) que admita las siguientes operaciones: 1. **insert(key, value)** – Inserta un par clave-valor. Si la clave ya existe, actualiza el valor de forma atómica. Devuelve true si se insertó una clave nueva, false si se actualizó. 2. **remove(key)** – Elimina lógicamente el par clave-valor. Devuelve true si la clave se encontró y fue eliminada, false en caso contrario. 3. **find(key)** – Devuelve el valor asociado a la clave, o indica ausencia. 4. **range_query(low, high)** – Devuelve todos los pares clave-valor donde low <= key <= high, como una lista ordenada por clave. El resultado debe ser una instantánea consistente: no debe incluir claves que nunca estuvieron presentes simultáneamente durante la ejecución de la operación. 5. **size()** – Devuelve el número aproximado de elementos activos (no eliminados). Requisitos y restricciones: - La skip list debe ser segura para uso concurrente por múltiples hilos que ejecuten cualquier mezcla de las operaciones anteriores simultáneamente, sin un bloqueo global único. Puedes usar bloqueo de grano fino, técnicas sin bloqueo (CAS) o una combinación. - La eliminación perezosa es aceptable: los nodos pueden marcarse lógicamente como eliminados antes de su remoción física. - La generación probabilística de niveles debe usar una distribución geométrica estándar con p=0.5 y un nivel máximo de 32. - Las claves son enteros de 64 bits; los valores son cadenas. - Incluye consideraciones adecuadas de seguridad de memoria. Si usas un lenguaje sin recolector de basura, explica o implementa tu estrategia de recuperación de memoria (por ejemplo, reclamación basada en épocas (epoch-based reclamation), hazard pointers). Entregables: 1. Código fuente completo, compilable/ejecutable, con comentarios que expliquen tu estrategia de concurrencia. 2. Una prueba o demostración que lance múltiples hilos ejecutando inserciones, eliminaciones, búsquedas y consultas por rango concurrentes, y valide la corrección (por ejemplo, sin actualizaciones perdidas, sin lecturas fantasma en las consultas por rango, sin fallos). 3. Una sección breve de análisis (como comentarios o un docstring) que discuta: - Las garantías de linealizabilidad (o aislamiento por instantánea) que proporciona tu implementación. - La complejidad temporal esperada de cada operación. - Limitaciones conocidas o posibles problemas ABA y cómo los abordas. Tu solución será evaluada en corrección bajo concurrencia, claridad del código, solidez de la estrategia de concurrencia, calidad del mecanismo de instantánea para consultas por rango y exhaustividad del análisis.

69 1
18 Mar 2026 22:05

Preguntas educativas

Google Gemini 2.5 Pro VS OpenAI GPT-5.4

Explicar la paradoja del teorema de Banach–Tarski y sus implicaciones educativas

La paradoja de Banach–Tarski afirma que una bola sólida en el espacio tridimensional se puede descomponer en un número finito de piezas no solapadas, las cuales pueden luego ser reensambladas (usando únicamente rotaciones y traslaciones) en dos bolas sólidas, cada una idéntica en tamaño a la original. Responda lo siguiente en un ensayo estructurado: 1. Indique con precisión cuántas piezas se necesitan en la demostración estándar del teorema de Banach–Tarski (dé el número mínimo exacto establecido en la bibliografía). 2. Explique por qué este resultado no contradice la realidad física ni la conservación de la masa. En su explicación, identifique la propiedad matemática específica que deben tener las piezas y que impide que sean realizables físicamente, y nombre el axioma de la teoría de conjuntos del que depende fundamentalmente la demostración. 3. Describa cómo se relaciona el concepto de “medida” (en el sentido de la medida de Lebesgue) con esta paradoja. ¿Por qué no podemos simplemente decir que los volúmenes deben sumarse? 4. Discuta cómo se usa este teorema en la educación matemática a nivel avanzado de pregrado o posgrado. ¿Qué lecciones clave sobre los fundamentos de las matemáticas—específicamente respecto al Axioma de Elección, los conjuntos no medibles y los límites de la intuición geométrica—ilustra? Sugiera un enfoque pedagógico para introducir este tema a estudiantes que lo encuentran por primera vez. Su ensayo debe ser riguroso pero accesible, demostrando tanto precisión matemática como perspectiva educativa.

83
18 Mar 2026 20:40

Programación

Anthropic Claude Sonnet 4.6 VS OpenAI GPT-5.4

Implementar un resolvedor de dependencias en Python

Se le ha encomendado crear un resolvedor de dependencias para un sistema simple de gestión de paquetes. Escriba una función Python `resolve_dependencies(package_definitions, target_package)` que determine el orden correcto de instalación para un paquete dado y sus dependencias. El argumento `package_definitions` es una lista de cadenas. Cada cadena define un paquete y sus dependencias directas en el formato: `'PackageName: Dep1, Dep2, ...'`. Si un paquete no tiene dependencias, el formato es `'PackageName:'`. Su función debe: 1. Analizar las cadenas de entrada para construir un grafo de dependencias. 2. Dado un `target_package`, encontrar todas sus dependencias (incluyendo las transitivas). 3. Devolver una única lista de cadenas que represente el orden de instalación. Esta lista debe estar ordenada topológicamente (una dependencia debe aparecer siempre antes que el paquete que depende de ella). El `target_package` en sí debe ser el último elemento de la lista. La lista no debe contener duplicados. 4. Detectar dependencias circulares. Si se encuentra un ciclo, lanzar un `ValueError` con un mensaje que indique claramente el ciclo (por ejemplo, 'Se detectó una dependencia circular que involucra: A -> B -> A'). 5. Detectar paquetes faltantes. Si un paquete lista una dependencia que no está definida en `package_definitions`, lanzar un `ValueError` con un mensaje como 'Falta la definición del paquete para: C'.

69
18 Mar 2026 20:21

Mostrando 121 a 140 de 333 resultados

Enlaces relacionados

X f L