8
これは繰り返しによるものですか?
問題: チェスでは、繰り返しによる引き分けについて、ある程度よく知られているルールがあります。同じ位置が3回(またはそれ以上)繰り返される場合、この繰り返しを引き起こす動きをしようとするプレーヤーは引き分けを要求できます。 最後のいくつかの動きが単にプレイヤーが前後に動いている場合、これはアービターが見つけやすいタスクである場合があります。ピースが繰り返される位置間で大幅に移動した場合、それはささいなことではありません。 この課題の問題は、座標表記の動きのリストが与えられた場合、主張された位置が繰り返しによって描画された場合(3回以上見られた場合)、主張された位置が繰り返しによって描画されない場合に偽の値を出力することです以下で説明するように、または選択した表記(ただし、テストケースを変換する必要があります)。 ポジションとは何ですか? 現実の世界のシナリオでは、位置は、プレイヤーがキャッスルできるかどうか、または通行人が可能かどうかなどの影響を受けます。これらを問題の解決策で考慮するべきではありません。この問題では、ボード上のピースの構成によって位置が簡単に定義されます。したがって、この問題の目的のために、両方のボード上の各正方形が同じ色の同じタイプのピースで占められている場合、2つの位置は同じであると見なされます。これは正確なピースである必要はありません。たとえば、白の騎士は正方形を入れ替えることができ、他のすべてのピースが基準を満たす場合、これは同じ位置になります。 有効な表記法はどのようなものですか? 座標表記について説明しますが、選択した表記システムで自由に入力できます。提供するもの: 表記法の各項目は、次のいずれかまたはすべてを説明しています。チェック、チェックメイト、ダブルチェック、チェックメイト、またはステイルメイトが配信されたかどうか。受動的なキャプチャが発生した場合。初期位置; 最終的な位置。 表記に繰り返しに関する情報がない場合があります。 したがって、これらの基準が満たされている限り、回答で指定する限り、表記法を受け入れます。これは、たとえば、0インデックス行、列タプル、またはプログラムにとって意味のあるものになります。 座標表記 座標表記は、純粋に動きを座標系として記述する表記です。 動きは、最初にセットからの初期座標として{A1-H8}、次に同じセットからの宛先座標として再び記述されます。だから、王のギャンビットは(文字列のコレクションとして)のようになります {"E2-E4","E7-E5","F2-F4"} チェックが発生したかどうか、ピース移動の種類などの外部情報が散らばっていないため、この問題に使用するのに最適な表記法であると考えています。前に述べたように、表記法は任意であるため、代数表記法などの別の表記法を使用したり、この表記法を適用したりできます(ダッシュを削除するか、タプルのリストとして取得します) ルール: ポジションまたはムーブが有効かどうかを考慮すべきではなく、それが繰り返しを引き起こすかどうかだけを考慮すべきです キャスリングとポーンのプロモーションは行われないと想定できます。 入力として文字列のリストを取得し、最後の移動で3回目(またはそれ以上)の繰り返しが発生したかどうかに対応する真偽値または偽値を出力する必要があります。 ゲームは常にチェスの標準的な開始位置から始まります。初期位置は繰り返しにカウントできます。 最終移動で位置が繰り返されない場合、繰り返しによる描画は発生していません 一般的なルール: これはcode-golfであるため、バイト単位の最短回答が優先されます。 コードゴルフ言語では、非コードゴルフ言語で回答を投稿することを妨げないでください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 標準のルールがデフォルトのI / Oルールを使用した回答に適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。 デフォルトの抜け穴は禁止されています。 可能であれば、コードのテストへのリンク(TIOなど)を追加してください。 また、回答の説明を追加することを強くお勧めします。 テストケース 以下について真理値を返す必要があります。 {"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"} {"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8"} {"B1-C3","B8-C6","D2-D4","D7-D5","D1-D3","D8-D6","C3-B1","C6-B8","B1-C3","B8-C6","D3-D1","D6-D8","D1-D3","D8-D6"} {"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-E6","E2-F3","E6-D4","F3-D1","D4-C6","D1-E2","C6-D4","E1-D1","D4-C6","D1-E1","C6-D4"} {"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","B1-C3"} およびfalsey値: {} {"E2-E4","E7-E5","F2-F4"} {"B1-C3","B8-C6","C3-B1","C6-B8","B1-C3","B8-C6","C3-B1","C6-B8","F2-F4","F7-F5"} {"E2-E4","E7-E5","G1-F3","B8-C6","F1-C4","G8-F6","F3-G5","D7-D5","E4-D5","F6-D5","G5-F7"} {"D2-D4","B8-C6","E2-E4","C6-D4","D1-E2","D4-C6","E2-D1","C6-D4","D1-E2","D4-C6","E2-D1"} {"B1-C3","B8-C6","C3-B5","C6-B4","B5-D4","B4-D5","D4-C6","D5-C3","C6-B8","C3-B1","B8-C6","B1-C3","C6-B8","C3-B1"} {"E2-E4","E7-E5","D1-E2","E8-E7","E1-D1","D8-E8","E2-E1","E7-D8","E1-E2","E8-E7","E2-E1","E7-E8"}