Je ne pouvais trouver que des défis de code-golf pour Mastermind, alors voici une version de défi de code que j'aurais aimé relever moi-même.
Une stratégie optimale pour le jeu Mastermind normal, MM (4,6), a été trouvée par Koyama et Lai en 1993, avec un nombre moyen de suppositions = 5625/1296 ~ 4,34. MM (5,8) n'est toujours pas résolu, mais on estime qu'il a un nombre moyen de suppositions ~ 5,5.
Votre tâche consiste à créer une stratégie MM (5,8), c'est-à-dire pour 5 trous et 8 couleurs, couvrant toutes pow(8,5) = 32768
les solutions distinctes possibles. De toute évidence, il ne doit pas être optimal. Vous avez deux choix:
- Publiez un programme déterministe qui génère la stratégie. Le programme doit être compilable / exécutable sur Windows 7, Mac OS X ou Linux sans logiciel supplémentaire non libre.
- Publiez votre stratégie (avec votre nom StackExchange) quelque part sur Internet et publiez l'URL ici.
Dans les deux cas, indiquez le score (voir ci-dessous) dans l'en-tête de la réponse.
La stratégie doit être codée selon la grammaire suivante:
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'
L'algorithme utilisé pour décider du nombre de chevilles de touches noir / blanc est décrit dans http://en.wikipedia.org/wiki/Mastermind_(board_game)
Notez que la réponse "50" (c'est-à-dire une supposition correcte) est implicite et ne fait pas partie de la grammaire.
Notation: N = la somme du nombre de suppositions pour chacun des 32768 chemins / solutions. La stratégie avec le N le plus bas gagne. Premier tie-break: le plus petit nombre maximum de suppositions. Deuxième bris d'égalité: la première réponse publiée. Le concours se termine le 1er août 2014 à 0h00 GMT .
Un exemple de stratégie pour MM (2,3) avec score = 21:
{AB:{10:{AC:{10:AA,01:CB,00:BB}},02:BA,01:{BC:{01:CA}},00:CC}}
En utilisant cette stratégie, les 9 jeux possibles se dérouleront comme suit:
- 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
Je publierai bientôt un vérificateur de stratégie MM (5,8) basé sur Java pour votre commodité.
{AB:{10|01:BB}}
? J'ai une réponse, mais elle est assez naïve et en raison de la structure arborescente de la grammaire, elle ne s'adapte pas bien du tout (4 trous, 3 couleurs, génère une stratégie de 147 Mo, que je pourrais réduire considérablement en combinant des parties de l'arbre).