Hex / Polygonのゲームの結果を計算してください。
Hex / Polygon / CON-TAC-TIXとして知られる抽象的なボードゲームは、ルールはとてもシンプルですが、実際にプレイするとなると複雑です。 2人のプレイヤーが、六角形のマスを持つ平行四辺形の上に石を置きます。 自分の石を反対側まで先につなげたプレイヤーの勝ちです。 平行四辺形の4つの辺は、2人のプレイヤーに分けられます(つまり、一方のプレイヤーには1つの辺とその真向かいの辺が割り当てられ、もう一方のプレイヤーには残りの2つの辺が割り当てられます)。
目標は、ボードの簡単な表現を受け取って、勝者(または勝者がいないこと)を計算するプログラムを作ることです。 すべてのゲームが「公平」である必要はないことに注意してください。 (たとえば、プレイヤー同士で石の数が異なっていたり、ボードの幅と高さが違っていたりするかもしれません。)
ボードは次のようになります。
. O . X .
. X X O .
O O O X .
. X O X O
X O O O X
「Oのプレイヤー」は上から下へ、「Xのプレイヤー」は左から右へ進みます。
上の例では、Oは左から右へつながっていますが、Oは上と下をつないでいないため、まだ誰も勝っていません。
テストケースの中には、不公平に思えるものがあるかもしれません。 しかし、実際に正当なものである場合もあります。 たとえば、若いプレイヤーや初心者のプレイヤーに、盤面の決まった位置へ追加でn個の駒を与えることはよくあります。そのため、それ以外は完全に合法な対局でも、駒の数が食い違うことがあります。
いずれにせよ、この演習で扱うのは、盤面の長さや追加の駒など、さまざまなパラメーターを持ちうる対局の勝者を判定することだけです。 誰がどこにいつ動いたか、手番がどちらかといった、その他の対局の状態には関心がありません。
ですから、そうした不公平に見える対局に戸惑う必要はありません。