हाल ही में, मुझे एक पहेली गेम से परिचित कराया गया था जिसे सॉलिटेयर शतरंज कहा जाता है । मैं यहाँ नियमों को संक्षेप में बताऊंगा:
- बोर्ड एक 4x4 चेकबोर्ड है।
- सभी टुकड़े एक ही रंग के होते हैं (कोई टीम नहीं) और सभी टुकड़े किसी अन्य टुकड़े को पकड़ सकते हैं।
- हर कदम पर कब्जा होना चाहिए। खाली चौकों की ओर नहीं।
- अंत में एक टुकड़ा शेष होना चाहिए।
- सभी टुकड़े ठीक उसी तरह चलते हैं जैसे वे शतरंज में करते हैं, एक संशोधन के साथ: मोहरा किसी भी विकर्ण दिशा में कब्जा कर सकता है (जो तकनीकी रूप से इसे एक फ़र्ज़ बनाता है )। उन लोगों के लाभ के लिए जो शायद नहीं जानते हैं, मैंने आंदोलन आरेखों को शामिल किया है।
- शतरंज के अन्य नियम (जैसे कि चेक, कास्टिंग, आदि) में से कोई भी यहां लागू नहीं होता है। यह सभी के बारे में है।
राजा (के)
K * . . | * K * . | * * * .
* * . . | * * * . | * K * .
. . . . | . . . . | * * * .
. . . . | . . . . | . . . .
क्वीन (Q)
Q * * * | * Q * * | * * * .
* * . . | * * * . | * Q * *
* . * . | . * . * | * * * .
* . . * | . * . . | . * . *
Rook (R)
R * * * | * R * * | . * . .
* . . . | . * . . | * R * *
* . . . | . * . . | . * . .
* . . . | . * . . | . * . .
बिशप (बी)
B . . . | . B . . | * . * .
. * . . | * . * . | . B . .
. . * . | . . . * | * . * .
. . . * | . . . . | . . . *
नाइट (एन)
N . . . | . N . . | . . . *
. . * . | . . . * | . N . .
. * . . | * . * . | . . . *
. . . . | . . . . | * . * .
प्यादा (P)
P . . . | . P . . | * . * .
. * . . | * . * . | . P . .
. . . . | . . . . | * . * .
. . . . | . . . . | . . . .
इनपुट आउटपुट
संदर्भ के लिए, सॉलिटेयर शतरंज वेबपेज से नमूना पहेली का उपयोग किया जाएगा:
. . . .
. B . .
R P . .
. . . N
समाधान है कि मोहरे को नाइट के साथ ले जाएं, फिर नाइट को किश्ती के साथ ले जाएं, और अंत में किश्ती के साथ बिशप लें।
इनपुट
इनपुट तीन रूपों में से एक में होना चाहिए; आप उस चीज को लेने के लिए स्वतंत्र हैं जो आपके लिए सबसे सुविधाजनक है।
- पात्रों की एक स्ट्रिंग जैसे कि
.....B..RP.....N
, नई कहानियों के साथ या बिना। रिक्त स्थान का प्रतिनिधित्व करने वाला चरित्र ऐसा कोई भी चरित्र हो सकता है जो इसमें से एक नहीं हैKQRBNP
। - सूचियों की एक सूची (या एक चपटी सूची) जहां तत्व या तो वर्ण या संख्या हैं, जैसे:
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
या[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
। पूर्व के लिए, एक रिक्त स्थान का प्रतिनिधित्व करने वाला वर्ण कुछ भी हो सकता है जो इसमें से एक नहीं हैKQRBNP
। उत्तरार्द्ध के लिए, मैंने टुकड़ों को संख्या दी है जो मेरी पिछली चालों की सूची में उनकी रैंक से मेल खाती है (1
एक राजा है,4
एक बिशप है,6
एक मोहरा है, आदि)। आप नंबरिंग बदलने के लिए स्वतंत्र हैं। - निर्देशांक की एक सूची जहां प्रत्येक तत्व का रूप है
[x, y, 'c']
, जैसे[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
:।
यदि आप सूची-आधारित इनपुट प्रारूपों में से एक को चुनते हैं, तो विभाजक और सीमांकक किसी भी उचित और समझ में आने वाले वर्ण हो सकते हैं।
उत्पादन
आउटपुट को चाल का एक क्रम या बोर्ड राज्यों का एक अनुक्रम होना चाहिए। कुछ पहेली में एक से अधिक समाधान होते हैं; आप उनमें से एक या सभी का उत्पादन कर सकते हैं। यदि आप बोर्ड राज्यों के अनुक्रम का उत्पादन करना चुनते हैं, तो प्रत्येक बोर्ड को तीन विभाजक प्रारूपों में से एक में होना चाहिए, उनके बीच एक उचित विभाजक (जैसे कि newlines) के साथ।
यदि आप चालों के अनुक्रम को आउटपुट करना चुनते हैं, तो उन्हें समन्वित जोड़े के जोड़े की सूची के रूप में व्यक्त किया जाना चाहिए, जैसे [[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
:। [0,0]
नीचे के बाएं कोने का प्रतिनिधित्व करता है, और फिर से, पात्रों को अलग करना और परिसीमन करना कोई उचित विकल्प हो सकता है।
यदि किसी दिए गए बोर्ड को हल नहीं किया जा सकता है, तो किसी भी गलत मूल्य ( 0
, खाली स्ट्रिंग, आदि) का उत्पादन करें। यदि किसी दिए गए बोर्ड में दो टुकड़े से कम है, तो व्यवहार अपरिभाषित है।
परीक्षण के मामलों
नोट: आउटपुट केवल निर्देशांक के जोड़े की एक सूची के रूप में दिए गए हैं क्योंकि अन्य प्रारूपों को शुद्धता के लिए जांचना काफी आसान होना चाहिए (और मुझे ऐसा महसूस नहीं हुआ कि सभी संभावित आउटपुट प्रारूप टाइप करना है)। इसके अलावा, उन पहेलियों के लिए जिनमें एक से अधिक समाधान हैं, केवल एक संभावना प्रदान की जाती है।
इनपुट 1:
. . . N
. . . .
. R . .
. . B .
...N.....R....B.
[['.', '.', '.', 'N'], ['.', '.', '.', '.'], ['.', 'R', '.', '.'], ['.', '.', 'B', '.']]
[[0, 0, 0, 5], [0, 0, 0, 0], [0, 3, 0, 0], [0, 0, 4, 0]]
[[3, 3, 'N'], [1, 1, 'R'], [2, 0, 'B']]
आउटपुट 1:
[[[2,0], [1,1]], [[1,1], [3,3]]]
इनपुट 2:
. . . .
. B . .
R P . .
. . . N
.....B..RP.....N
[['.', '.', '.', '.'], ['.', 'B', '.', '.'], ['R', 'P', '.', '.'], ['.', '.', '.', 'N']]
[[0, 0, 0, 0], [0, 4, 0, 0], [3, 6, 0, 0], [0, 0, 0, 5]]
[[1, 2, 'B'], [0, 1, 'R'], [1, 1, 'P'], [3, 0, 'N']]
आउटपुट 2:
[[[3,0], [1,1]], [[0,1], [1,1]], [[1,1], [1,2]]]
इनपुट 3:
. N R .
B . . .
N . . B
. . P .
.NR.B...N..B..P.
[['.', 'N', 'R', '.'], ['B', '.', '.', '.'], ['N', '.', '.', 'B'], ['.', '.', 'P', '.']]
[[0, 5, 3, 0], [4, 0, 0, 0], [5, 0, 0, 4], [0, 0, 6, 0]]
[[1, 3, 'N'], [2, 3, 'R'], [0, 2, 'B'], [0, 1, 'N'], [3, 1, 'B'], [2, 0, 'P']]
आउटपुट 3:
[[[2,0], [3,1]], [[0,1], [1,3]], [[0,2], [1,3]], [[2,3], [1,3]], [[3,1], [1,3]]]
इनपुट 4:
. . . N
. . . R
R B B .
N P P .
...N...RRBB.NPP.
[['.', '.', '.', 'N'], ['.', '.', '.', 'R'], ['R', 'B', 'B', '.'], ['N', 'P', 'P', '.']]
[[0, 0, 0, 5], [0, 0, 0, 3], [3, 4, 4, 0], [5, 6, 6, 0]]
[[3, 3, 'N'], [3, 2, 'R'], [0, 1, 'R'], [1, 1, 'B'], [2, 1, 'B'], [0, 0, 'N'], [1, 0, 'P'], [2, 0, 'P']]
आउटपुट 4:
[[[2,1], [3,2]], [[1,1], [3,3]], [[3,2], [1,0]], [[3,3], [0,0]], [[0,1], [0,0]], [[0,0], [1,0]], [[1,0], [2,0]]]
इनपुट 5:
P . . .
. R . .
R . R .
. R . .
P....R..R.R..R..
[['P', '.', '.', '.'], ['.', 'R', '.', '.'], ['R', '.', 'R', '.'], ['.', 'R', '.', '.']]
[[6, 0, 0, 0], [0, 3, 0, 0], [3, 0, 3, 0], [0, 3, 0, 0]]
[[0, 3, 'P'], [1, 2, 'R'], [0, 1, 'R'], [2, 1, 'R'], [1, 0, 'R']]
आउटपुट 5:
[[[0,3], [1,2]], [[1,2], [2,1]], [[2,1], [1,0]], [[1,0], [0,1]]]
इनपुट 6:
. P . N
K . . .
. . B .
. . R Q
.P.NK.....B...RQ
[['.', 'P', '.', 'N'], ['K', '.', '.', '.'], ['.', '.', 'B', '.'], ['.', '.', 'R', 'Q']]
[[0, 6, 0, 5], [1, 0, 0, 0], [0, 0, 4, 0], [0, 0, 3, 2]]
[[1, 3, 'P'], [3, 3, 'N'], [0, 2, 'K'], [2, 1, 'B'], [2, 0, 'R'], [3, 0, 'Q']]
आउटपुट 6:
[[[3,0], [2,0]], [[2,0], [2,1]], [[3,3], [2,1]], [[2,1], [1,3]], [[0,2], [1,3]]]
[["R", [2, 0], [1, 1]], ["N", [1, 1], [3, 3]]]