Solo pude encontrar desafíos de código de golf para Mastermind, así que aquí hay una versión de desafío de código que me hubiera gustado asumir.
Koyama y Lai encontraron una estrategia óptima para el juego Mastermind normal, MM (4,6) en 1993, con un número promedio de conjeturas = 5625/1296 ~ 4.34. MM (5,8) aún no se ha resuelto, pero se estima que tiene un número promedio de conjeturas ~ 5.5.
Su tarea es crear una estrategia MM (5,8), es decir, para 5 agujeros y 8 colores, que cubra todas las pow(8,5) = 32768
posibles soluciones distintas. Obviamente, no tiene que ser óptimo. Tienes dos opciones:
- Publique un programa determinista que genere la estrategia. El programa debe ser compilable / ejecutable en Windows 7, Mac OS X o Linux sin ningún software adicional no libre.
- Publique su estrategia (junto con su nombre de StackExchange) en algún lugar de Internet y publique la URL aquí.
En ambos casos, indique el puntaje (ver abajo) en el encabezado de la respuesta.
La estrategia debe codificarse de acuerdo con la siguiente gramática:
strategy : guessing-strategy | known-solution-strategy
guessing-strategy : '{' guess ':' branches '}'
known-solution-strategy : guess
guess : color color color color color
color : 'A'..'H'
branches : '{' branch (',' branch)* '}'
branch : reply ':' strategy
reply : number-of-blacks number-of-whites
number-of-blacks : number-of-key-pegs
number-of-whites : number-of-key-pegs
number-of-key-pegs : '0'..'5'
El algoritmo utilizado para decidir el número de clavijas de teclas en blanco y negro se describe en http://en.wikipedia.org/wiki/Mastermind_(board_game)
Tenga en cuenta que la respuesta "50" (es decir, la suposición correcta) está implícita y no forma parte de la gramática.
Puntuación: N = la suma del número de conjeturas para cada una de las 32768 rutas / soluciones. La estrategia con la N más baja gana. Primer desempate: el número máximo más bajo de conjeturas. Segundo tie-break: la primera respuesta publicada. La competencia termina el 1 de agosto de 2014 a las 0:00 GMT .
Un ejemplo de una estrategia para MM (2,3) con puntaje = 21:
{AB:{10:{AC:{10:AA,01:CB,00:BB}},02:BA,01:{BC:{01:CA}},00:CC}}
Usando esta estrategia, los 9 juegos posibles serán así:
- AB 20
- AB 10, AC 20
- AB 10, AC 10, AA 20
- AB 10, AC 01, CB 20
- AB 10, AC 00, BB 20
- AB 02, BA 20
- AB 01, BC 20
- AB 01, BC 01, CA 20
- AB 00, CC 20
Pronto publicaré un verificador de estrategia MM (5,8) basado en Java para su conveniencia.
{AB:{10|01:BB}}
? Tengo una respuesta, pero es bastante ingenua y, debido a la estructura de árbol de la gramática, no se escala bien en absoluto (4 agujeros, 3 colores, genera una estrategia de 147 MB, que podría reducir significativamente combinando partes de el árbol).