Berechne das Ergebnis für eine Partie Hex / Polygon.
Das abstrakte Brettspiel, das als Hex / Polygon / CON-TAC-TIX bekannt ist, hat recht einfache Regeln, ist in der Praxis aber komplex. Zwei Spieler setzen Steine auf ein Parallelogramm mit hexagonalen Feldern. Wer seine Steine zuerst mit der gegenüberliegenden Seite verbindet, gewinnt. Die vier Seiten des Parallelogramms werden unter den beiden Spielern aufgeteilt (das heißt, ein Spieler bekommt eine Seite und die direkt gegenüberliegende, der andere Spieler bekommt die beiden übrigen Seiten).
Dein Ziel ist es, ein Programm zu schreiben, das anhand einer einfachen Darstellung eines Bretts den Gewinner berechnet (oder den Umstand, dass es keinen gibt). Beachte, dass nicht alle Partien „fair“ sein müssen. (Zum Beispiel können die Spieler unterschiedlich viele Steine haben, oder das Spielbrett kann eine andere Breite und Höhe haben.)
Die Bretter sehen so aus:
. O . X .
. X X O .
O O O X .
. X O X O
X O O O X
„Spieler O“ spielt von oben nach unten, „Spieler X“ spielt von links nach rechts.
Im obigen Beispiel hat O eine Verbindung von links nach rechts hergestellt, aber niemand hat gewonnen, da O nicht oben und unten verbunden hat.
Dir wird vielleicht auffallen, dass einige Testfälle unfair erscheinen. Allerdings kann das durchaus berechtigt sein. Zum Beispiel ist es üblich, jungen oder Anfänger-Spielern n zusätzliche Figuren an festen Positionen auf dem Brett zu geben, sodass in einem ansonsten völlig regelkonformen Spiel unterschiedliche Figurenzahlen vorkommen können.
In dieser Übung geht es auf jeden Fall nur darum, den Gewinner für ein Spiel zu ermitteln, das verschiedene Parameter haben kann, etwa die Länge des Bretts und zusätzliche Figuren. Alle anderen Zustände des Spiels sind uninteressant, etwa wer wohin gezogen ist, wann, oder wer am Zug ist.
Lass dich von diesen scheinbar unfairen Spielen also nicht verwirren.
Melde dich bei Exercism an, um Scala mit 95 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.