ショート氏はチェスをするのが好きです。ショート氏もとても伝統的な人です。したがって、ショート氏は現代のチェスで代数表記を使用する最近の傾向に悩まされており、彼は彼の父親と彼の前の父親の父のように、むしろ記述表記を使用したいと思います。
注意
この課題を単純化するために、私は曖昧さを処理しないことを選択しました(2つのピースが同じ正方形に移動したり、同じピースをキャプチャしたりできる場合など)。また、エンパッサン、プロモーション、Castlingも扱いません。
初心者のための代数表記
- ボードの正方形には
a1
、左下からh8
右上に番号が付けられています。文字はファイル(列)を表し、数字はランク(行)を表します。白のキングはゲームの最初の広場に置かれe1
ます。 - 移動は、移動した駒+移動先の正方形で構成されます。たとえば、移動先のキング
e2
はになりますKe2
。 - 移動した駒がポーンの場合、駒文字は省略されます。たとえば、ポーンの最初の移動先
e4
はと表記されe4
ます。 - 移動がキャプチャの場合は
x
、ピースと移動先の正方形の間に文字が挿入されます。たとえば、で捕らえている女王f7
はとして注釈が付けられQxf7
ます。 - キャプチャーピースがポーンである場合、それは斜めに移動するため、ポーンの元のファイルが記法で記録されます。たとえば、Pawn at
c4
がで駒をキャプチャするとd5
、その動きはとして注釈が付けられcxd5
ます。 - ピースシンボルは
K
、キング、Q
クイーン、B
ビショップ、N
ナイト、R
ルークのシンボルです。ポーンにはシンボルがありません。 - その他の注釈には
+
、チェック#
用とチェックメイト用があります。f7に移動してチェックを行うポーンはf7+
です。スペースの不足に注意してください。
初心者向けの説明表記
- ファイルは、その上から始まる部分によって記述されます。たとえば
e
、代数でのファイルはKingファイル、または略してになりK
ます。他のファイルはそれらの側でマークされ、次にピースです。したがって、fileh
はKing's Rookのファイル、またはKR
です。 - ランクは、移動するプレーヤーの視点から番号が付けられます。代数的で4番目のランクは、白の4番目のランクですが、黒の5番目のランクです。
- したがって、正方形
e4
はK4
白のプレーヤーK5
用と黒のプレーヤー用です。四角f7
はKB7
白のプレーヤーKB2
用と黒のプレーヤー用です。 - 動きは、駒の動き、ダッシュ、ターゲットの四角形で注釈されます。したがって、移動先のポーン
K4
はP-K4
です。移動する女王KR5
はQ-KR5
です。 - キャプチャーには、キャプチャーピース、次に
x
、キャプチャーピースの順に注釈が付けられます。したがって、ポーンを捕獲する司教はBxP
です。通常、どの Pawnがキャプチャされているかをマークする必要がありますが、簡単にするためにこれは無視してください。 - ピースシンボルは
K
、キング、Q
クイーン、B
ビショップ、Kt
ナイト(別のシンボルに注意)、R
ルーク、P
ポーン用です。 - 他の注釈には
ch
、チェックmate
用とチェックメイト用があります。移動しKB7
てチェックを行うポーンはP-KB7 ch
です。スペースに注意してください。
入力
スペースで区切られた代数表記の文字列が移動します。移動番号はありません。たとえば、フールの仲間は次のようになります。
f3 e5 g4 Qh4#
または、同じWikipediaページからのゲームTeed vs Delmar:
d4 f5 Bg5 h6 Bf4 g5 Bg3 f4 e3 h5 Bd3 Rh6 Qxh5+ Rxh5 Bg6#
e4 e5 f4 exf4 Bc4 Qh4+ Kf1 b5 Bxb5 Nf6 Nf3 Qh6 d3 Nh5 Nh4 Qg5 Nf5 c6 g4 Nf6 Rg1 cxb5 h4 Qg6 h5 Qg5 Qf3 Ng8 Bxf4 Qf6 Nc3 Bc5 Nd5 Qxb2 Bd6 Bxg1 e5 Qxa1+ Ke2 Na6 Nxg7+ Kd8 Qf6+ Nxf6 Be7#
入力は常に有効なゲームであると想定できます。すべての移動は正しい順序で行われ、無関係なデータはありません。明確化を含む動きはありません。
たとえば、エバーグリーンゲームは、当然ながら有効なゲームであるにもかかわらず、19番手のために入力されませんRad1
。
すべての入力ムーブリストが開始位置から始まると想定することもできます。
出力
記述表記の同様の形式のムーブリスト。
たとえば、フールの仲間:
P-KB3 P-K4 P-KKt4 Q-KR5 mate
ティーvsデルマー:
P-Q4 P-KB4 B-KKt5 P-KR3 B-KB4 P-KKt4 B-KKt3 P-KB5 P-K3 P-KR4 B-Q3 R-KR3 QxP ch RxQ B-KKt6 mate
不滅のゲーム:
P-K4 P-K4 P-KB4 PxP B-QB4 Q-KR5 ch K-KB1 P-QKt4 BxP Kt-KB3 Kt-KB3 Q-KR3 P-Q3 Kt-KR4 Kt-KR4 Q-KKt4 Kt-KB5 P-QB3 P-KKt4 Kt-KB4 R-KKt1 PxB P-KR4 Q-KKt3 P-KR5 Q-KKt4 Q-KB3 Kt-KKt1 BxP Q-KB3 Kt-QB3 B-QB4 Kt-Q5 QxP B-Q6 BxR P-K5 QxR ch K-K2 Kt-QR3 KtxP ch K-Q1 Q-KB6 ch KtxQ B-K7 mate
これは、最も単純な記述表記ではありません。移動先のKnightファイルを指定する必要がない場合があるためです(たとえば、移動が不可能なため、このQ-KKt4
ように記述できます)。移動があいまいです(ポーン:にする必要があります) 、しかしショート氏はそれについてあまり気にしません。Q-Kt4
Q-QKt4
BxP
BxQKtP
あなたはこれらをあなたのテストケースと考えるかもしれません。
注:これらは手動で作成しました。重大な間違いを見つけた場合はお知らせください。
ルールとスコアリング
- 標準規則が適用されます:stdoutまたは関数への出力を伴うプログラム。stderrには何もありません。標準の抜け穴は禁止されています。
- コードをテストできるサイトにリンクしてください。
- コードゴルフ:最短のコードが勝ちます。
結論として
これは私の最初の挑戦なので、おそらくいくつかのわいせつな間違いを犯しました。質問に対するフィードバック(コメントで明らかに)は高く評価されます。