Tantangan
Tulis program atau fungsi yang menggunakan input string sebagai parameter fungsi atau dari stdin dan tentukan apakah itu string FEN yang valid .
Memasukkan
Anda dapat mengasumsikan input hanya akan menyertakan karakter berikut (peka huruf besar-kecil)
pkqrbnPKQRBN12345678/
Panjang input akan selalu minimum 1 karakter dan maksimal 100 karakter
Keluaran
Output harus berupa nilai truey / falsey. Ini bisa berupa nilai apa pun yang Anda inginkan asalkan konsisten (semua hasil yang benar memiliki hasil yang sama, semua hasil yang palsu memiliki hasil yang sama). Anda harus memiliki dua kemungkinan output yang berbeda.
Apa yang dianggap valid
Huruf kecil mewakili potongan hitam, huruf besar mewakili potongan putih.
Anda harus memastikan ada kemungkinan dalam permainan catur untuk potongan-potongan di posisi saat ini ada.
Setiap pemain akan selalu memiliki tepat 1 raja (k / K).
Setiap pemain mungkin tidak memiliki lebih dari 8 pion (p / P).
Setiap pemain biasanya tidak memiliki lebih dari 1 * ratu (q / Q).
Setiap pemain biasanya tidak memiliki lagi dari 2 * rooks (r / R)
Setiap pemain biasanya memiliki tidak lebih dari 2 * ksatria (n / N)
Setiap pemain biasanya tidak memiliki lebih dari 2 * uskup (b / B)
* Adalah sah bagi seorang pemain untuk ' mempromosikan 'pion ke salah satu dari keempat bagian ini.
Total pion, ratu, benteng, ksatria, dan uskup untuk setiap pemain tidak akan pernah lebih dari 15
Jumlah total potongan ditambah kotak kosong (dilambangkan dengan angka) harus selalu menambahkan hingga tepat 8 untuk setiap peringkat. Dan harus selalu ada persis 8 peringkat, dipisahkan oleh garis miring ke depan.
Hal yang bisa Anda abaikan
Anda tidak perlu mengkhawatirkan diri Anda dengan apakah mungkin untuk bermain ke posisi yang dilambangkan, atau jika posisi itu legal, hanya potongan-potongan itu bisa ada dalam jumlah yang diberikan.
Anda dapat mengabaikan kompleksitas string FEN lebih lanjut seperti giliran pemain, hak castling dan en passant.
Ini golf kode. Program terpendek dalam byte menang. Celah dan aturan biasa berlaku.
Uji Kasus
Input rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
Output Benar
Input 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
Output Benar
Input r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
Output Salah
(hitam memiliki 7 pion dan 4 benteng - tidak mungkin)
Input 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
Output Salah (hanya 7 peringkat)
Input 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
Output Salah (9 peringkat)
Input 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
Output Salah (peringkat ke-2 memiliki 9 kotak / potongan)
Masukan rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
Keluaran Benar
Terima kasih kepada Feersum dan Arnauld untuk mengklarifikasi kasus ini (3 + 5 = 8)
Apa itu FEN?
FEN adalah notasi standar untuk merekam posisi potongan-potongan di papan catur.
Kredit gambar http://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.
Pemain mungkin memiliki hingga 9 ratu asalkan jumlah pion dikurangi untuk mengimbangi. Anda tidak perlu khawatir tentang posisi potongan yang legal atau ilegal, hanya jumlah potongan.
35
hanyalah cara yang tidak biasa untuk menggambarkan 8 kotak kosong.