Atomic Chessเป็นเกมหมากรุกที่สนุกมากซึ่งการจับทุกครั้งทำให้เกิด "การระเบิด", การทำลายชิ้นส่วนที่ถูกจับ, ชิ้นส่วนที่จับได้และไม่ได้จำนำในรัศมี 1 สแควร์ เป้าหมายของการท้าทายนี้ไม่ใช่เพื่อเล่นเกมหมากรุกปรมาณูทั้งเกม แต่เพื่อจำลองสิ่งที่เกิดขึ้นเมื่อมีการเคลื่อนไหวเกิดขึ้น
ข้อจำกัดความรับผิดชอบ: ไม่รวมเอฟเฟกต์เสียงการระเบิด
อินพุต
ตำแหน่งของคณะกรรมการจะได้รับในForsyth-Edwards Notation (หรือที่รู้จักกันทั่วไปว่า FEN) แต่มีเพียงฟิลด์แรกเท่านั้น ตัวอย่างเช่นอินพุตของ:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
แสดงถึงตำแหน่งเริ่มต้น:
สิ่งนี้จะต้องดำเนินการเป็นสตริงหรือเทียบเท่าภาษาของคุณ มันรับประกันว่าถูกต้อง; ตัวอย่างเช่นคุณไม่ต้องสนใจว่ามีสิบราชาหรือไม่มีกษัตริย์เลย
นอกจากนี้คุณยังจะได้รับการย้ายที่คุณจะต้องจำลองซึ่งจะแสดงเป็นชื่อตารางสองชื่อ: สี่เหลี่ยมที่ชิ้นส่วนที่จะย้ายคือและสี่เหลี่ยมก็จะย้ายไป ตัวอย่างเช่นการขยับตัวรับจำนำของกษัตริย์สองช่องไปข้างหน้าในภาพด้านบนจะแสดงเป็น:
e2e4
สิ่งนี้จะต้องถูกนำมาเป็นสตริง ย้ายจะเป็นที่ถูกต้องและคุณไม่จำเป็นต้องสนับสนุนcastling คุณจำเป็นต้องรองรับผู้ที่เดินทางไปไหนมาไหนซึ่งจะอธิบายรายละเอียดเพิ่มเติมในส่วนถัดไป
เอาท์พุต
ผลลัพธ์ของโปรแกรมของคุณควรอยู่ในรูปแบบบางส่วน -FEN เหมือนกับอินพุตโดยมีการย้ายที่ระบุ (และชิ้นส่วนใด ๆ จะระเบิดหากจำเป็น)
กฎที่แน่นอนสำหรับการระเบิดคือ - เมื่อจับชิ้นส่วน:
เอาชิ้นส่วนที่ถูกจับ (ซึ่งมักจะเป็นชิ้นส่วนในตารางที่สองชื่อในการป้อนข้อมูลยกเว้นเมื่อจับเป็นการกิน )
นำชิ้นส่วนที่กำลังจับภาพออก (ซึ่งจะเป็นชิ้นส่วนของสี่เหลี่ยมจัตุรัสแรกที่มีชื่ออยู่ในอินพุต)
ลบทุกชิ้นนั่นคือ:
ตั้งอยู่บนหนึ่งใน 8 สี่เหลี่ยมรอบหนึ่งที่จับภาพที่เกิดขึ้น (สำหรับการกินนี้เป็นตารางที่จำนำจับจะอยู่ถ้ามันไม่ระเบิด)
ไม่จำนำ
ภาพรวมอย่างรวดเร็วของการกินกฎสำหรับผู้ที่ไม่คุ้นเคย: ถ้าย้ายจำนำสองช่องว่างข้างหน้าจากตำแหน่งเริ่มต้นของตนและมีการจำนำที่จะได้จับมันถ้ามันเพียงย้ายหนึ่งตารางข้างหน้าก็อาจจะจับมันอยู่แล้ว แต่ เฉพาะในการย้ายครั้งต่อไป จับภาพนี้บอกว่าจะทำ " ในการผ่าน " (หรือในภาษาฝรั่งเศส: " การกิน ")
กรณีทดสอบ
ในรูปภาพลูกศรสีเขียวแสดงการเคลื่อนไหวที่จะทำซ้ำและวงกลมสีเขียวแสดงถึงชิ้นส่วนที่ถูกระเบิด
อินพุต: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
, g1f3
เอาต์พุต:rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R
อินพุต: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P1pP/2rP1P2/R1B3RK
, f2g3
เอาต์พุต: 3kBb1r/pp5p/3p4/4pn2/P7/1P2P2P/2rP4/R1B3RK
(ถูกขโมยจากhttp://en.lichess.org/ocoSfS5I/white#36 )
อินพุต: rnbqk1nr/1pp5/p2pp1pp/5p2/1bN5/2P1PQ1N/PP1P1PPP/R1B1KB1R
, f3b7
เอาต์พุต: 3qk1nr/2p5/p2pp1pp/5p2/1bN5/2P1P2N/PP1P1PPP/R1B1KB1R
(ถูกขโมยจากhttp://en.lichess.org/NCUnA6LV/white#14 )
อินพุต: rnbqk2r/pp2p2p/2p3pb/3pP3/5P2/2N5/PPPP2P1/R1BQKB1R
, e5d6
เอาต์พุต: rnbqk2r/pp2p2p/2p3pb/8/5P2/2N5/PPPP2P1/R1BQKB1R
(ถูกขโมยมาจากhttp://en.lichess.org/AvgU4Skq/white#16 ; นี่ไม่ใช่การเคลื่อนไหวที่เกิดขึ้นจริง แต่ฉันไม่สามารถถูกรบกวนได้เพื่อค้นหาเกมปรมาณูที่มีอยู่จริง: P)
อินพุต: 5r2/2k5/p1B5/1pP1p3/1P4P1/3P4/P7/1K3R1q
, c6h1
เอาต์พุต: 5r2/2k5/p7/1pP1p3/1P4P1/3P4/P7/1K3R2
(ถูกขโมยจากhttp://en.lichess.org/l77efXEb/white#58 )
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ