ความท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นซึ่งรับอินพุตสตริงเป็นพารามิเตอร์ฟังก์ชันหรือจาก stdin และพิจารณาว่าเป็นสตริงFEN ที่ถูกต้องหรือไม่
อินพุต
คุณสามารถสันนิษฐานได้ว่าอินพุตจะมีอักขระต่อไปนี้ (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)
pkqrbnPKQRBN12345678/
ความยาวของอินพุตจะต้องมีอย่างน้อย 1 ตัวอักษรและสูงสุด 100 ตัวอักษร
เอาท์พุต
ผลลัพธ์ควรเป็นค่าจริง / เท็จ เหล่านี้สามารถเป็นค่าใด ๆ ที่คุณต้องการตราบใดที่พวกเขามีความสอดคล้องกัน (ผลความจริงทั้งหมดมีผลลัพธ์ที่เหมือนกันผลลัพธ์เท็จทั้งหมดมีผลลัพธ์ที่เหมือนกัน) คุณควรมีเอาต์พุตที่แตกต่างกันสองแบบ
สิ่งที่นับว่าถูกต้อง
ตัวอักษรตัวพิมพ์เล็กแทนชิ้นส่วนสีดำตัวอักษรตัวพิมพ์ใหญ่แทนชิ้นส่วนสีขาว
คุณควรตรวจสอบให้แน่ใจว่าเป็นไปได้ในเกมหมากรุกสำหรับชิ้นส่วนที่อยู่ในตำแหน่งปัจจุบัน
ผู้เล่นแต่ละคนจะมี 1 ราชาเสมอ (k / K)
ผู้เล่นแต่ละคนอาจมีไม่เกิน 8 เบี้ย (p / P)
ผู้เล่นแต่ละคนมักจะมีไม่เกิน 1 * ราชินี (q / Q)
ผู้เล่นแต่ละคนจะไม่มีอีกต่อไป มากกว่า 2 * rooks (r / R)
ผู้เล่นแต่ละคนจะมีอัศวินไม่เกิน 2 * (n / N)
ผู้เล่นแต่ละคนมักจะมีไม่เกิน 2 * bishops (b / B)
* มันถูกกฎหมายสำหรับผู้เล่นที่ ' ส่งเสริม 'จำนำให้กับสี่ชิ้นใด ๆ เหล่านี้
จำนวนเบี้ย, ควีนส์, rooks, อัศวินและบาทหลวงสำหรับผู้เล่นแต่ละคนจะไม่เกิน 15
จำนวนชิ้นรวมกับช่องว่างที่ว่างเปล่า (แสดงโดยตัวเลข) ควรบวกได้สูงสุด 8 สำหรับแต่ละอันดับ และควรมีตำแหน่ง 8 ตำแหน่งเสมอคั่นด้วยเครื่องหมายสแลช
สิ่งที่คุณสามารถเพิกเฉย
คุณไม่จำเป็นต้องกังวลกับตัวเองว่าเป็นไปได้หรือไม่ที่จะเล่นลงในตำแหน่งที่แสดงหรือหากตำแหน่งนั้นถูกกฎหมายเพียงชิ้นส่วนเท่านั้นที่สามารถมีอยู่ในปริมาณที่กำหนด
คุณสามารถละเว้นความซับซ้อนเพิ่มเติมของสาย FEN เช่นเทิร์นเพลเยอร์, สิทธิ์ในการเหวี่ยงและ en passant
นี่คือรหัสกอล์ฟ โปรแกรมที่สั้นที่สุดเป็นไบต์ชนะ ใช้ช่องโหว่และกฎตามปกติ
กรณีทดสอบ
อินพุต rnbqkbnr / pppppppp / 8/8/8/8 / PPPPPPPP / RNBQKBNR
เอาต์พุตจริง
อินพุต 2br2k1 / 1p2n1q1 / p2p2p1 / P1bP1pNp / 1BP2PnP / 1Q1B2P1 / 8 / 3NR2K
เอาต์พุตจริง
อินพุต r2r2k1 / p3q2p / ppR3pr / rP4bp / 3p4 / 5B1P / P4PP1 / 3Q1RK1
เอาต์พุตเท็จ
(สีดำมี 7 เบี้ยและ 4 rooks - เป็นไปไม่ได้)
อินพุต 6k1 / pp3ppp / 4p3 / 2P3b1 / bPP3P1 / 3K4 / P3Q1q1
เอาต์พุตเท็จ (เพียง 7 แถว)
อินพุต 3r1rk1 / 1pp1bpp1 / 6p1 / pP1npqPn / 8 / 4N2P / P2PP3 / 1B2BP2 / R2QK2R
เอาต์พุตเท็จ (9 อันดับ)
อินพุต 5n1k / 1p3r1qp / p3p3 / 2p1N2Q / 2P1R3 / 2P5 / P2r1PP1 / 4R1K1
เอาต์พุตเท็จ (อันดับที่ 2 มี 9 สี่เหลี่ยม / ชิ้น)
อินพุต rnbqkbnr / pppppppp / 8/35/8/8 / PPPPPPPP / RNBQKBNR
เอาท์พุทจริง
ขอบคุณ Feersum และ Arnauld สำหรับชี้แจงกรณีนี้ (3 + 5 = 8)
เฟนคืออะไร
FENเป็นสัญกรณ์มาตรฐานสำหรับการบันทึกตำแหน่งของชิ้นส่วนบนกระดานหมากรุก
เครดิตภาพhttp://www.chessgames.com
* It is legal for a player to 'promote' a pawn to any of these four pieces.
ผู้เล่นอาจมีมากถึง 9 ราชินีตราบใดที่จำนวนเบี้ยลดลงเพื่อชดเชย คุณไม่จำเป็นต้องกังวลเกี่ยวกับตำแหน่งของชิ้นส่วนที่ถูกกฎหมายหรือผิดกฎหมายเพียงจำนวนชิ้น
35
เป็นเพียงวิธีที่ผิดปกติในการอธิบายช่องว่าง 8 ช่อง