In die Bank wurde eingebrochen, und alle lokalen Mafia-Schläger haben ein ungewöhnliches Alibi: Sie waren zu Hause und haben Connect 4 gespielt! Um bei der Untersuchung behilflich zu sein, müssen Sie ein Programm zur Validierung aller beschlagnahmten Connect 4-Karten schreiben, um zu überprüfen, ob die Positionen tatsächlich Positionen aus einem gültigen Connect 4-Spiel sind und nicht hastig zusammengesetzt wurden sobald die polizei an die tür geklopft hat.
Die Regeln für Connect 4: Spieler R
und Y
wechseln sich ab, um Kacheln ihrer Farbe in Spalten eines 7x6-Gitters abzulegen. Wenn ein Spieler ein Plättchen in die Spalte fallen lässt, fällt es nach unten, um die niedrigste unbesetzte Position in dieser Spalte einzunehmen. Gelingt es einem Spieler, einen horizontalen, vertikalen oder diagonalen Durchgang von vier Steinen seiner Farbe auf dem Brett zu erzielen, gewinnt er und das Spiel endet sofort.
Zum Beispiel (beim R
Starten) ist das Folgende eine unmögliche Connect 4-Position.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Ihr Programm oder Ihre Funktion muss eine Connect 4-Karte aufnehmen und entweder zurückgeben
- Ein falscher Wert, der angibt, dass die Position unmöglich ist oder
- Eine Reihe von Zahlen von 1 bis 7, was auf eine mögliche Folge von Bewegungen zu dieser Position (die Spalten führen , sind nummeriert ,
1
um7
von links nach rechts, so dass die Sequenz112
, zum Beispiel zeigt eine rote Bewegung in der Spalte1
, gefolgt von einem gelben move in der Spalte1
, gefolgt von einem roten Zug in der Spalte2
). Sie können eine andere Spaltennummer als 1234567 wählen, sofern Sie dies in Ihrer Lösung angeben. Wenn Sie die Liste in einem anderen Format zurückgeben möchten; Zum Beispiel als Array,[2, 4, 3, 1, 1, 3]
dann ist das auch in Ordnung, solange es einfach ist zu sehen, was die Bewegungen sind.
Sie können die Tafel in jedem vernünftigen Format lesen, auch mit anderen Buchstaben als R
und Y
für die Spieler, aber Sie müssen angeben, welcher Spieler zuerst spielt. Sie können davon ausgehen, dass das Board immer 6x7 ist und zwei Spieler anwesend sind.
Sie können davon ausgehen, dass die Positionen, die Sie erhalten, zumindest physisch auf einer Standard-Connect 4-Karte erstellt werden können. dh, dass es keine "schwebenden" Teile geben wird. Sie können davon ausgehen, dass das Board nicht leer ist.
Dies ist Codegolf, also gewinnt die kürzeste Antwort. Es gelten Standardlücken.
Beispiele
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |