前書き
Nine Mens's Morris(Millsとも呼ばれます)は、次のボードでプレイされる2人用のボードゲームです(リンクされているウィキペディアのページからの画像)。
各プレイヤーには、黒と白の色の9人の男性がいます。具体的なルールはこの課題にとって重要ではありませんが、興味があればウィキペディアのページをご覧ください。
チャレンジ
特定のボード状態を表すグリッドを入力として指定し、で合計ミルカウントm
を出力し0<=m<=8
ます。
同じ色の3人の男性が接続ポイントの直線の列にいるとき、工場を形成します。 b2
to f2
は男性ではないため、工場ではありません。またd2
するd5
3点を接続する必要があるため工場を形成しないでしょう。
上の画像のボードには、たとえば2つのミルが含まれています。からf2
にf6
1つ、からe3
に1つe5
。
入力
ボードは、上記のサンプル画像に示すように接続された24ポイントの2Dグリッドとして表されます。この例ではa-g
、列にfrom 1-7
を、行にfrom numberを使用していますが、24の一意の座標を次の状態のいずれかにマッピングする限り、任意の妥当な入力形式を選択できます。
- 空の
- 黒で撮影
- 白で撮影
具体的な表現はあなた次第で、色の「b」または「w」に制限されません。
これに加えて、入力には追加情報が含まれない場合があります。
その他の注意事項
- どのような種類の値でもポイントをマップする必要はありません。入力を2D配列として取得する場合も同様です。ただし、すべてのポイントが使用されているわけではなく、それらの間の接続を考慮する必要があることに注意してください。
- 入力が空の場合、ゼロを出力する必要があります(空のボード->ミルなし)。
- 各プレイヤーには9人の男性がいるため、入力には18を超える獲得ポイントは含まれません。
- 入力の空のポイントを除外することができます。したがって、取得される入力ポイントのみを除外できます。
- 入力は任意の方法で注文できます。特定の順序に依存することはできません。
- 入力は常に有効であると仮定することができます。これは、各色の男性が9人を超えないこと、および各ポイントが一意になることを意味します。
ルール
- ソリューションで使用する入力形式を明確にします。プログラムの実行例を提供することを強くお勧めします。
- 機能または完全なプログラムが許可されます。
- 入出力のデフォルト規則。
- 標準の抜け穴が適用されます。
- これはcode-golfなので、バイト数が最小になります。Tiebreakerは以前の提出です。
テストケース
ここでの入力形式は、上の例のような座標が最初の要素であり、ポイントの状態が2番目の要素であるタプルのリストです。白で撮影されたポイントは「w」、黒で撮影されたポイントは「b」としてマークされます。他のすべてのポイントは省略され、空になります。
[( "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
ハッピーコーディング!
d3
、d5
接続されません。ルールは言う: Three men of the same color form a mill when they are in a straight row of connected points.
。このセクションにいくつかの例を追加して、明確にするために、コメントをありがとう!