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.
quelle
{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).Antworten:
Java
Mein Algorithmus für MM (5,8) punktet mit
177902178006182798182697 mit einer maximalen Tiefe von89 und benötigt nur wenige Sekunden (auf meinem langsamen Computer).Eine Beispielausgabe einer Strategie für MM (2,3) mit score = 21, die von diesem Algorithmus gefunden wurde, sieht folgendermaßen aus:
Es gibt nichts Aufregendes an meinem Algorithmus. Keine Erfindung. Ich habe gerade die im Netz gefundenen Rezepte befolgt und in diesen Java-Code komprimiert. Die einzige Optimierung, die ich vorgenommen habe, ist der Versuch, die Codezeilen (in gewisser Weise) zu optimieren. Es geht so:
@ MrBackend: Einen Prüfer zu schreiben ist schwierig, denke ich. ;-)
Einige Bemerkungen:
Die Strategie für
MM(5,8)
finden Sie hier . GitHub hat einige Probleme mit der Anzeige langer Zeilen. Klicken Sie daher auf die Schaltfläche Raw .quelle
Rubin
BEARBEITEN: Es wurde eine Logik hinzugefügt, um unmögliche Vermutungen auszuschließen. Daher entsprechen die Strategien jetzt dem vorgegebenen Format und sind viel leichter zu handhaben.
Hier ist ein Versuch, dies in Gang zu bringen. Es ist ziemlich naiv (und nicht gut lesbar - es hilft, den if / elsif / else-Zweig von unten nach oben zu lesen).
Zuerst versuche ich 5 jede Farbe:
AAAAA
,BBBBB
usw. Von diesem ich herausfinden , welche Farben tatsächlich in dem Muster verwendet werden. Und dann probiere ich einfach alle Permutationen der angegebenen Farben aus und lasse diejenigen weg, die von den schwarzen Stiften bereits ausgeschlossen wurden.Hier ist die
MM(2,3)
Strategie:Die Strategie für
MM(5,8)
dauert 376 KB und kann hier gefunden werden . GitHub hat einige Probleme mit der Anzeige langer Zeilen. Klicken Sie daher auf die Schaltfläche Raw .Wenn ich jetzt einen Prüfer bekomme, kann ich Ihnen auch sagen, wie hoch meine tatsächliche Punktzahl ist. :)
quelle