Mr Short suka bermain catur. Tuan Short juga orang yang sangat tradisional. Oleh karena itu, Mr Short terganggu oleh tren baru-baru ini menggunakan notasi aljabar dalam catur modern, dan ia lebih suka menggunakan notasi deskriptif , seperti ayahnya dan ayah ayahnya sebelum dia.
Catatan
Untuk menyederhanakan tantangan ini, saya memilih untuk tidak berurusan dengan disambiguasi (seperti, ketika dua potong dapat pindah ke kotak yang sama, atau dapat menangkap potongan yang sama.) Juga tidak ada berurusan dengan en passant, promosi, atau Castling.
Notasi aljabar untuk yang belum tahu
- Kotak papan diberi nomor mulai
a1dari kiri bawah hinggah8kanan atas. Huruf mewakili file (kolom) sedangkan angka mewakili peringkat (baris). Raja putih ditempatkan di awal permainan di alun-alune1. - Langkah terdiri dari bagian yang bergerak + kotak tujuan. Sebagai contoh, seorang raja pindah ke
e2akanKe2. - Jika potongan yang dipindahkan adalah Pion, huruf potong dihilangkan. Misalnya, langkah awal Gadai
e4ditulis sebagaie4. - Jika langkah tersebut merupakan tangkapan, maka
xhuruf dimasukkan di antara bagian dan kotak tujuan. Sebagai contoh, seorang Ratu yang menangkap dif7diberi penjelasan sebagaiQxf7. - Jika bagian yang menangkap adalah Gadai, karena ia bergerak secara diagonal, notasi mencatat file asal Gadai tersebut. Misalnya, ketika Pion di
c4menangkap bagian did5, langkah tersebut dijelaskan sebagaicxd5. - Simbol bagian
Kuntuk Raja,Quntuk Ratu,Buntuk Uskup,Nuntuk Ksatria, danRuntuk Benteng. Pion tidak memiliki simbol. - Anotasi lain termasuk
+untuk cek, dan#untuk skakmat. Gadai pindah ke f7 dan memberi cekf7+. Perhatikan kekurangan ruang.
Notasi deskriptif untuk yang belum tahu
- File-file tersebut dijelaskan oleh bagian yang dimulai di atasnya. Misalnya, apa yang akan menjadi
efile dalam Aljabar, menjadi file King, atau, singkatnyaK,. File-file lain ditandai di sisi mereka, lalu bagian itu. Jadi filehadalah file King's Rook, atauKR. - Barisan diberi nomor dari sudut pandang pemain yang bergerak. Apa yang akan menjadi peringkat keempat dalam Aljabar, adalah peringkat keempat untuk kulit putih, tetapi peringkat kelima untuk kulit hitam.
- Oleh karena itu alun-alun
e4adalahK4untuk pemain putih danK5untuk pemain hitam. Kotakf7adalahKB7untuk pemain putih danKB2untuk pemain hitam. - Sebuah gerakan dijelaskan oleh bagian yang bergerak, kemudian tanda hubung, lalu target persegi. Jadi pion pindah
K4adalahP-K4. Seorang Ratu pindah keKR5adalahQ-KR5. - Suatu tangkapan dianotasi oleh bagian yang menangkap, kemudian
x, bagian yang ditangkap. Karena itu seorang Uskup yang menangkap seorang Pion adalahBxP. Biasanya Anda perlu menandai Pion mana yang sedang ditangkap, tetapi abaikan saja ini demi kesederhanaan. - Simbol bagian
Kuntuk Raja,Quntuk Ratu,Buntuk Uskup,Ktuntuk Ksatria (perhatikan simbol yang berbeda),Runtuk Benteng, danPuntuk Pion. - Anotasi lain termasuk
chuntuk cek danmateuntuk skakmat. Gadai pindah keKB7dan memberi cekP-KB7 ch. Perhatikan ruangnya.
Memasukkan
Sederetan notasi aljabar bergerak, digambarkan oleh spasi. Tidak ada nomor bergerak. Misalnya, pasangan Bodoh seperti ini:
f3 e5 g4 Qh4#
Atau game Teed vs Delmar, dari halaman Wikipedia yang sama:
d4 f5 Bg5 h6 Bf4 g5 Bg3 f4 e3 h5 Bd3 Rh6 Qxh5+ Rxh5 Bg6#
The Immortal permainan .
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#
Anda dapat berasumsi bahwa input selalu merupakan game yang valid. Semua gerakan berada dalam urutan yang benar, dan tidak ada data asing yang hadir. Tidak ada gerakan yang akan mencakup disambiguasi .
Sebagai contoh, permainan The Evergreen meskipun, jelas, permainan yang valid, tidak akan menjadi masukan karena langkah ke - 19 Rad1,.
Anda juga dapat mengasumsikan bahwa semua daftar langkah input mulai dari posisi awal.
Keluaran
Daftar pemindahan, dengan format yang serupa, dalam notasi deskriptif.
Misalnya, pasangan Bodoh:
P-KB3 P-K4 P-KKt4 Q-KR5 mate
Teed vs Delmar:
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
The Immortal Game:
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
Ini bukan notasi Deskriptif yang paling sederhana yang mungkin, karena kadang-kadang Anda tidak perlu menentukan ke mana file Knight dipindahkan (seperti dalam, Q-KKt4dapat ditulis sebagai Q-Kt4karena langkah Q-QKt4itu tidak mungkin.) Langkah BxPini ambigu (yang menggadaikan: seharusnya BxQKtP) , tapi Tuan Short tidak terlalu peduli tentang itu.
Anda dapat mempertimbangkan ini kasus uji Anda.
Catatan: Saya menulis ini dengan tangan. Jika Anda menemukan kesalahan mencolok, beri tahu saya.
Aturan dan Penilaian
- Aturan standar berlaku: program dengan output ke stdout, atau fungsi. Tidak ada apa-apa untuk stderr. Celah standar dilarang.
- Harap tautkan ke situs tempat kami dapat menguji kode Anda.
- Golf kode: kode menang pendek.
Kesimpulannya
Ini adalah tantangan pertama saya, jadi saya mungkin membuat beberapa kesalahan noobish. Umpan balik atas pertanyaan (dalam komentar, jelas) sangat dihargai.