Ich konnte nur Code-Golf-Herausforderungen für Mastermind finden, daher hier eine Code-Challenge-Version, die ich gerne selbst angenommen hätte.
Eine optimale Strategie für das normale Mastermind-Spiel, MM (4,6), wurde 1993 von Koyama und Lai mit einer durchschnittlichen Rate von 5625/1296 ~ 4,34 gefunden. MM (5,8) ist immer noch ungelöst, hat aber schätzungsweise eine durchschnittliche Anzahl von Vermutungen von ~ 5,5.
Ihre Aufgabe ist es, eine MM (5,8) -Strategie für 5 Löcher und 8 Farben zu erstellen, die alle pow(8,5) = 32768
möglichen unterschiedlichen Lösungen abdeckt . Natürlich muss es nicht optimal sein. Sie haben zwei Möglichkeiten:
- Veröffentlichen Sie ein deterministisches Programm, das die Strategie generiert. Das Programm muss unter Windows 7, Mac OS X oder Linux ohne zusätzliche nicht-freie Software kompilierbar / lauffähig sein.
- Veröffentlichen Sie Ihre Strategie (zusammen mit Ihrem StackExchange-Namen) irgendwo im Internet und geben Sie die URL hier ein.
Geben Sie in beiden Fällen die Punktzahl (siehe unten) in der Kopfzeile der Antwort an.
Die Strategie muss gemäß der folgenden Grammatik codiert werden:
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'
Der Algorithmus zur Bestimmung der Anzahl der schwarzen / weißen Tastenstifte ist in http://en.wikipedia.org/wiki/Mastermind_(board_game) beschrieben.
Beachten Sie, dass die Antwort "50" (dh die richtige Schätzung) impliziert ist und nicht Teil der Grammatik ist.
Wertung: N = die Summe der Anzahl der Vermutungen für jeden der 32768 Pfade / Lösungen. Die Strategie mit den niedrigsten N gewinnt. Erster Gleichstand: Die niedrigste maximale Anzahl von Vermutungen. Zweiter Gleichstand: Die erste gesendete Antwort. Der Wettbewerb endet am 1. August 2014 um 0:00 Uhr GMT .
Ein Beispiel für eine Strategie für MM (2,3) mit score = 21:
{AB:{10:{AC:{10:AA,01:CB,00:BB}},02:BA,01:{BC:{01:CA}},00:CC}}
Mit dieser Strategie werden die 9 möglichen Spiele so ablaufen:
- 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
Ich werde demnächst einen Java-basierten MM (5,8) -Strategieprüfer veröffentlichen.
{AB:{10|01:BB}}
? Ich habe eine Antwort, aber es ist ziemlich naiv und aufgrund der Baumstruktur der Grammatik überhaupt nicht gut skalierbar (4 Löcher, 3 Farben, 147 MB Strategie, die ich durch die Kombination von Teilen von deutlich reduzieren könnte) der Baum).