शतरंज की दुनिया में काफी काम हुआ है। उदाहरण के लिए, एक मानकीकृत फ़ाइल प्रारूप है .pgn
, जो चालों की सूची सहित एक शतरंज के खेल का वर्णन करता है। इसके अतिरिक्त, एक और फ़ाइल प्रारूप है .fen
, जो एक बोर्ड की स्थिति का वर्णन करता है। आज चुनौती है शतरंज की चाल की सूची ( बीजगणितीय अंकन में ) को बोर्ड की स्थिति में बदलना ।
परिभाषाएं
- स्थिति
[a-h][1-8]
: पंक्ति (फ़ाइल) और कॉलम (रैंक) को जोड़कर। बोर्ड पर 64 संभावित पदों में से एक को परिभाषित करता है। - टुकड़ा
[KQRBNP]?
: K ing, Q ueen, R ook, B ishop, K N ight, P awn का प्रतिनिधित्व करता है । बीजीय संकेतन में,P
उपयोग नहीं किया जाता है। जब एक बोर्ड पर उपयोग किया जाता है, तो अक्षर बड़े होते हैं यदि वे सफेद हैं, अन्यथा लोअरकेस। - चाल
[KQRBN]?[a-h]?[1-8]?x?[a-h][1-8](=[KQRBN])?(+*?)?|O-O(-O)
: एक टुकड़ा उसके बाद जिस स्थिति में जा रहा है।- यदि टुकड़ा अस्पष्ट है, तो पंक्ति, या स्तंभ, या दोनों दिए गए हैं।
- यदि टुकड़ा एक टुकड़ा कैप्चर कर रहा है, तो
x
टुकड़ा और स्थिति के बीच रखा जाता है। - यदि चाल एक जाति है, तो
O-O
राजा-पक्ष के लिए दी जाती है, अन्यथाO-O-O
। - यदि एक मोहरे को बढ़ावा दिया जा रहा है, तो इस कदम को
=
उस टुकड़े के साथ जोड़ दिया जाता है जिसे इसे बढ़ावा दिया जा रहा है। - यदि कोई चाल राजा को रोकती है, तो उसे संलग्न किया जाता है
+
। - यदि एक चाल राजा को चेकमेट में डालती है, तो इसके साथ संलग्न है
#
। - टुकड़े का रंग टर्न नंबर (सफेद और काले रंग के बारी बारी से, काले रंग से शुरू होता है) से निर्धारित होता है।
- बोर्ड
(([1-8]|[KQRBNPkqrbnp])*\/){8}
: पंक्तियों को पंक्ति क्रम में सूचीबद्ध करके दिया जाता है। यदि खाली वर्ग हैं, तो रन की लंबाई का उपयोग करके प्रत्येक वर्ग को खाली वर्ग दिया जाता है। पंक्तियों का उपयोग करके अलग किया जाता है/
एक बोर्ड की प्रारंभिक स्थिति है rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
, जो प्रतिनिधित्व करती है:
rnbqkbnr
pppppppp
PPPPPPPP
RNBQKBNR
आपको मूव्स की एक सूची लेने और एक बोर्ड को वापस करने की आवश्यकता है। आप मान सकते हैं कि आपका इनपुट वैध है।
उदाहरण
-> rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR
e4 -> rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR
e4,c5 -> rnbqkbnr/pp1ppppp/8/2p5/4P3/8/PPPP1PPP/RNBQKBNR
e4,d5,exd5,e5 -> rnbqkbnr/ppp2ppp/8/3Pp3/8/8/PPPP1PPP/RNBQKBNR
e4,d5,exd5,e5,dxe6 -> rnbqkbnr/ppp2ppp/4P3/8/8/8/PPPP1PPP/RNBQKBNR
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4 -> r1bqk2r/ppp2pp1/4Pn2/2P4p/6nP/8/PPP2PPN/RNBQKB1R
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4 -> r1bqk2r/ppp2pp1/4P3/2P4p/3Q2nP/6P1/PPP2n1N/RNB1KB1R
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4,Bf4,O-O -> r1bq1rk1/ppp2pp1/4P3/2P4p/3Q1BnP/6P1/PPP2n1N/RN2KB1R
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4,Bf4,O-O,Na3,Nxh1,O-O-O,Qg5,exf7+ -> r1b2rk1/ppp2Pp1/8/2P3qp/3Q1BnP/N5P1/PPP4N/2KR1B1n
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4,Bf4,O-O,Na3,Nxh1,O-O-O,Qg5,exf7+,Kh7,Bxg5,Rd8,f8=Q -> r1br1Q2/ppp3pk/8/2P3Bp/3Q2nP/N5P1/PPP4N/2KR1B1n
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4,Bf4,O-O,Na3,Nxh1,O-O-O,Qg5,exf7+,Kh7,Bxg5,Rd8,f8=Q,Ngf2,c6,Rd7,cxd7,b6,d8=Q,c6,Q4d6,Ba6,Qd8f6 -> r4Q2/p5pk/bppQ1Q2/6Bp/7P/N5P1/PPP2n1N/2KR1B1n
e4,d5,exd5,e5,dxe6,Bc5,Nf3,Nf6,d4,Nc6,dxc5,Ne5,h4,h5,Nh2,Neg4,g3,Nxf2,Qd4,N6g4,Bf4,O-O,Na3,Nxh1,O-O-O,Qg5,exf7+,Kh7,Bxg5,Rd8,f8=Q,Ngf2,c6,Rd7,cxd7,b6,d8=Q,c6,Q4d6,Ba6,Qd8f6,Rb8,Qdd8,b5,Qc5,b4,Qxb8,bxa3,Rd3,Nxd3+,Kd1,axb2,Bh3,b1=Q+,Kd2,Qxa2,Qh6+,gxh6,Qcd6,Qa1,Qbc7+,Kh8,Qdd8# -> 3Q3k/p1Q5/b1p4p/6Bp/7P/3n2PB/2PK3N/q6n
यह एक कोड-गोल्फ है , इसलिए अपने उत्तरों को यथासंभव छोटा करें!
e.p.
।