Descifra el código secreto
Todo lo que necesitas saber para descifrar el código
El juego oculta un código secreto formado por una secuencia de colores. Tu misión es descubrirlo en el menor número de intentos posible, usando la lógica y los indicadores de retroalimentación que el juego te proporciona tras cada intento.
Hay 8 colores disponibles para formar el código secreto.
El código tiene 4 posiciones (o 5 en modo avanzado). Cada posición lleva un color.
Por defecto sin repetición. Puedes activar duplicados para aumentar la dificultad.
Tienes 8 intentos por defecto para resolver el código (configurable).
Cada turno introduces una combinación de colores. Al confirmarla, el juego te responde con dos tipos de indicadores:
Supongamos que el código secreto es 🔴 Rojo · 🔵 Azul · 🟡 Amarillo · 🟢 Verde (oculto). Veamos cómo avanzar:
Ganas cuando los 4 indicadores son rojos (todos los colores en su posición exacta). Pierdes si agotas todos tus intentos sin encontrar el código. Al perder, el código secreto queda revelado.
💡 Consejo inicial: En tu primer intento, usa 4 colores completamente distintos para maximizar la información recibida. Así sabes de golpe cuántos de esos colores aparecen en el código.
Desde la apertura hasta el cierre: cómo pensar como un maestro descifrador
El primer intento es crucial porque no tienes información previa. Existen tres filosofías de apertura:
Cada respuesta del juego elimina una fracción del espacio de posibilidades. El objetivo es elegir combinaciones que reduzcan al máximo los códigos restantes sea cual sea la respuesta.
Si obtienes 0 pistas (ni rojo ni blanco) para un color, ese color está ausente del código. Jamás vuelvas a usarlo. Si obtienes 1 blanco para un color en posición 1, sabes que ese color existe pero no está en la posición 1. Elimina la posición 1 para ese color.
Ve anotando mentalmente (o en papel) las restricciones acumuladas. Después de 2-3 intentos bien hechos, el espacio posible colapsa drásticamente.
🔴 Situación "3 rojos en intento N": Solo quedan a lo sumo 3 códigos posibles (permutar el color no confirmado con los restantes). Aplica Minimax o simplemente prueba uno directamente.
⚪ Situación "todo blancos": Has encontrado exactamente los colores correctos pero en orden incorrecto. El código es una permutación exacta de tu intento. Prueba permutaciones sistemáticamente.
⬛ Situación "0 pistas en intento 1": Los 4 colores usados están ausentes. El código usa solo los 4 colores restantes. El espacio se reduce a 4! = 24 posibilidades (sin duplicados). Puedes resolver en 2-3 intentos más.
🎯 Regla del intento 4: Si llevas 3 intentos con buena estrategia, deberías tener ≤ 6 códigos posibles. En ese punto, casi siempre puedes resolver en 2 intentos más con Minimax. Si tienes más de 15 posibles en el intento 4, algo salió mal en la estrategia.
Si te quedan 3 o más intentos y tienes muchos posibles, optimiza (usa Minimax). Si te quedan 1-2 intentos, debes arriesgar y elegir directamente un código del espacio viable, apostando a que sea el correcto. Nunca desperdicies el último intento en un código informativo que sabes que no es la solución.
Combinatoria, teoría de la información y algoritmos óptimos
Con 8 colores y 4 posiciones sin repetición, el número total de códigos posibles es una permutación:
En general, con n colores y k posiciones sin repetición:
Si se permiten duplicados, el espacio crece a:
Cada intento puede producir distintas respuestas (combinaciones de rojos y blancos). Si cada respuesta divide el espacio en grupos de tamaño n₁, n₂, …, nₘ, la entropía esperada de ese intento es:
El intento óptimo maximiza H, lo que equivale a distribuir los códigos restantes lo más uniformemente posible. Un reparto perfecto sería si todas las respuestas son igualmente probables.
📊 Ejemplo concreto: Si quedan 1.680 códigos y tu intento los divide en grupos de 420, 420, 420, 420 (4 grupos iguales), la entropía es H = log₂(4) = 2 bits, lo que significa que eliminas exactamente el 75% del espacio con certeza matemática.
Donald Knuth demostró en 1977 que Mastermind con 6 colores y 4 posiciones siempre puede resolverse en 5 intentos. La estrategia usa el criterio Minimax:
Donde Part(c, s) es el subconjunto de códigos que producen la respuesta s cuando se intenta c. En esta versión con 8 colores:
Las respuestas posibles son pares (rojos, blancos) con rojos + blancos ≤ k. Para k=4:
| Rojos | Blancos posibles | Total combinaciones |
|---|---|---|
| 0 | 0, 1, 2, 3, 4 | 5 |
| 1 | 0, 1, 2, 3 | 4 |
| 2 | 0, 1, 2 | 3 |
| 3 | 0 | 1 (4 rojos = victoria) |
| Total respuestas distintas | 14 (excluyendo 3R+1B que es imposible) | |
Esta app califica tus jugadas usando el tamaño esperado del espacio restante tras tu intento:
La calificación de tu jugada se calcula como el ratio entre tu expected size y el óptimo:
El juego puede modelarse como un árbol de decisión donde cada nodo es un intento y cada rama es una respuesta posible. La profundidad del árbol corresponde al número máximo de intentos necesarios.
| Colores | Posiciones | Espacio | Peor caso (Minimax) | Promedio |
|---|---|---|---|---|
| 6 | 4 | 1.296 | 5 | ~4.3 |
| 8 | 4 | 1.680 | 6 | ~4.7 |
| 8 | 4 | 4.096 (con dup.) | 7 | ~5.2 |
| 8 | 5 | 6.720 | 7 | ~5.5 |
¿Cuál es el mínimo teórico de intentos posible? Como cada intento puede producir como mucho 14 respuestas distintas, y necesitamos distinguir entre N códigos, se puede calcular una cota inferior:
Esto significa que en teoría podrían bastar 3 intentos. En la práctica el mejor algoritmo conocido necesita 6 en el peor caso porque las particiones no son perfectamente uniformes.
🧮 La brecha teoría-práctica: La cota informacional dice 3, el algoritmo óptimo necesita 6. Esta brecha de 3 intentos existe porque no podemos garantizar que cada respuesta elimine exactamente 1/14 del espacio — la estructura combinatoria del juego impone restricciones geométricas sobre qué particiones son alcanzables.
La tabla de probabilidades que muestra esta app aplica inferencia bayesiana. Antes de jugar, cada código es igualmente probable:
Tras un intento con respuesta r, actualizamos mediante Bayes:
La tabla muestra entonces P(color_i en posición_j), calculada como la fracción de los códigos viables restantes que tienen el color i en la posición j:
💡 Ventaja competitiva directa: Si ves un 85% en una celda, ese color casi con certeza ocupa esa posición. Un 0% significa que es imposible. Usar esta tabla con conciencia es el equivalente a jugar con un asistente estadístico en tiempo real.
Calcular la jugada óptima exacta (Minimax completo) tiene complejidad:
Con n=8, k=4 y |S| ≤ 4096, esto es hasta ~16 millones de operaciones por turno — manejable en JavaScript. Esta app usa una optimización: cuando |S| > 30, reduce el pool de candidatos a los propios viables, sacrificando optimalidad marginal a cambio de velocidad instantánea.