Einführung
Nine Mens's Morris (auch Mills genannt) ist ein Brettspiel für zwei Spieler, das auf dem folgenden Brett gespielt wird (Bild von der verlinkten Wikipedia-Seite):
Jeder Spieler hat 9 Männer, schwarz und weiß gefärbt. Die konkreten Regeln sind für diese Herausforderung nicht wichtig, aber schauen Sie bei Interesse auf der Wikipedia-Seite nach.
Die Herausforderung
Bei einem Gitter als Eingabe, das einen bestimmten Boardstatus darstellt, wird die Gesamtanzahl der Mühlen m
mit ausgegeben 0<=m<=8
.
Drei gleichfarbige Männer bilden eine Mühle, wenn sie sich in einer geraden Reihe miteinander verbundener Punkte befinden. b2
to f2
ist keine Mühle, da die Männer von unterschiedlicher Farbe sind. Auch d2
auf d5
nicht eine Mühle bilden , da die drei Punkte miteinander verbunden werden müssen.
Die Tafel im Bild oben enthält zum Beispiel zwei Mühlen. Eins von f2
bis f6
und eins von e3
bis e5
.
Eingang
Die Tafel wird als 2D-Gitter mit 24 Punkten dargestellt, die wie im obigen Beispielbild dargestellt verbunden sind. In diesem Beispiel werden a-g
für die Spalten die Buchstaben von und 1-7
für die Zeilen die Zahlen von verwendet. Sie können jedoch jedes sinnvolle Eingabeformat auswählen, sofern 24 eindeutige Koordinaten einem der folgenden Zustände zugeordnet werden:
- Leeren
- Aufgenommen von Schwarz
- Aufgenommen von Weiß
Die konkrete Darstellung liegt bei Ihnen. Sie sind nicht auf "b" oder "w" für die Farben beschränkt.
Außerdem enthält Ihre Eingabe möglicherweise keine zusätzlichen Informationen.
Zusätzliche Bemerkungen
- Sie müssen die Punkte nicht durch irgendwelche Werte abbilden. Wenn Sie die Eingabe als 2D-Array verwenden möchten, ist dies ebenfalls in Ordnung. Bedenken Sie jedoch, dass nicht alle darin enthaltenen Punkte verwendet werden und dass Sie die Verbindungen zwischen ihnen berücksichtigen müssen.
- Die Eingabe ist möglicherweise leer. In diesem Fall müssen Sie Null ausgeben (leere Karte -> keine Mühlen).
- Da jeder Spieler 9 Männer hat, enthält die Eingabe niemals mehr als 18 genommene Punkte.
- Sie können leere Punkte in der Eingabe auslassen und daher nur Eingabepunkte, die verwendet werden.
- Der Eingang kann beliebig bestellt werden. Sie können sich nicht auf eine bestimmte Bestellung verlassen.
- Sie können davon ausgehen, dass die Eingabe immer gültig ist. Dies bedeutet, dass es nicht mehr als 9 Männer in jeder Farbe gibt und dass jeder Punkt einzigartig ist.
Regeln
- Stellen Sie klar, welches Eingabeformat Sie in Ihrer Lösung verwenden. Das Bereitstellen eines Beispiellaufs Ihres Programms wird dringend empfohlen.
- Funktion oder Vollprogramm erlaubt.
- Standardregeln für die Eingabe / Ausgabe.
- Es gelten Standardlücken .
- Dies ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl. Tiebreaker ist eine frühere Vorlage.
Testfälle
Das Eingabeformat ist hier eine Liste von Tupeln mit den Koordinaten wie im obigen Beispiel als erstes Element und dem Zustand des zweiten Punktelements. Ein von Weiß aufgenommener Punkt wird als "w" und ein von Schwarz aufgenommener Punkt als "b" markiert. Alle anderen Punkte werden ausgelassen und sind leer.
[("a4", "w"), ("b2", "b"), ("b4", "b"), ("c4", "b"), ("d1", "w") , ("d2", "w"), ("e3", "w"), ("e4", "w"), ("e5", "w"), ("f2", "b") , ("f4", "b"), ("f6", "b"), ("g4", "w")] -> 2 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b4", "b"), ("c4", "b") , ("d3", "w"), ("d2", "w"), ("d1", "w")] -> 3 [] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", w")] -> 0 [("b4", "b"), ("a4", b "), (" c4 ", b")] -> 1 [("a1", "b"), ("a4", "b"), ("a7", "b"), ("b2", "b"), ("b4", "b") , ("b6", "b"), ("c3", "b"), ("c4", "b"), ("c5", "b"), ("e3", "w") , ("e4", "w"), ("e5", "w"), ("f2", "w"), ("f4", "w"), ("f6", "w") , ("g1", "w"), ("g4", "w"), ("g7", "w")] -> 8
Viel Spaß beim Codieren!
d3
und d5
nicht verbunden sind. Die Regeln sagen: Three men of the same color form a mill when they are in a straight row of connected points.
. Ich habe in diesem Abschnitt einige Beispiele hinzugefügt, um dies zu verdeutlichen, danke für den Kommentar!