ट्रैक
/
Roc
Roc
/
अभ्यास
/
रानी का हमला
रानी का हमला

रानी का हमला

आसान

निर्देश

शतरंज के बोर्ड पर दो रानियों की स्थिति दी गई है। बताइए कि वे ऐसी जगहों पर रखी हैं या नहीं कि एक-दूसरे पर हमला कर सकें।

शतरंज के खेल में एक रानी उन मोहरों पर हमला कर सकती है जो उसी पंक्ति, स्तंभ या विकर्ण पर हों।

शतरंज के बोर्ड को 8 गुणा 8 के ऐरे के रूप में दर्शाया जा सकता है।

अगर आपको बताया जाए कि सफेद रानी c5 पर है (शून्य से गिनती शुरू करने पर स्तंभ 2, पंक्ति 3) और काली रानी f2 पर है (शून्य से गिनती शुरू करने पर स्तंभ 5, पंक्ति 6), तो आप जान जाते हैं कि बोर्ड कुछ इस तरह दिखता है:

दो रानियों वाला शतरंज का बोर्ड।  पर रखी रानी से निकलते तीर संभावित हमले की दिशाएँ दिखाते हैं, चाहे वे स्तंभ, पंक्ति या विकर्ण के साथ हों।

आप यह भी बता सकते हैं कि क्या ये रानियाँ एक-दूसरे पर हमला कर सकती हैं। इस स्थिति में जवाब हाँ होगा, क्योंकि दोनों रानियाँ एक ही विकर्ण पर हैं।

श्रेय

शतरंज के बोर्ड की यह तस्वीर habere-et-dispertire ने LaTeX और Ulrike Fischer के chessboard package की मदद से बनाई है।

इम्प्लीमेंटेशन

शतरंज में पंक्तियों को "रैंक" कहा जाता है और स्तंभों को "फाइल" कहा जाता है। रैंक 1 से 8 तक होती हैं, जबकि फाइल A से H तक होती हैं।

इस अभ्यास में, Square एक ऑपेक टाइप है जो शतरंज की बिसात के एक खाने को दर्शाता है। यह अंदरूनी रूप से 0-इंडेक्स्ड row और column फील्ड इस्तेमाल करता है। यह गारंटी देता है कि वे हमेशा मान्य होते हैं (यानी, 0 से 7 तक)।

create फंक्शन इनपुट के रूप में एक Str लेता है, जो आधिकारिक नोटेशन का उपयोग करके शतरंज की बिसात पर एक मान्य खाने को दर्शाता है, जैसे "C5". create फंक्शन को इस Str को पार्स करना होगा और जाँचना होगा कि यह एक मान्य खाने को दर्शाता है। अगर हाँ, तो उसे उचित row और column फील्ड वाली एक Square वैल्यू लौटानी होगी। रैंक 1, row 0 से मेल खाती है, और रैंक 8, row 7 से मेल खाती है। उदाहरण के लिए, create("C5") को row 4 और column 2 वाला एक खाना लौटाना होगा।

Square टाइप कुछ उपयोगी rank और file मेथड भी उपलब्ध कराता है। ऊपर के उदाहरण में, rank को पूर्णांक 5 लौटाना होगा और file को अक्षर 'C' लौटाना होगा।

अंत में, queen_can_attack फंक्शन दो अलग-अलग Square वैल्यू लेता है और जाँचता है कि इन खानों पर रखी रानियाँ एक-दूसरे पर हमला कर सकती हैं या नहीं।

मुख्य बात: Square जैसे ऑपेक टाइप तब बहुत अच्छे होते हैं जब आप कुछ गारंटी देना चाहते हैं, जैसे कि row और column हमेशा 0 और 7 के बीच रहते हैं। ऑपेक टाइप उपयोगकर्ताओं से इम्प्लीमेंटेशन का विवरण भी छिपाते हैं, जिससे API ज़्यादा साफ रहता है।

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Roc Exercism

रानी का हमला शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Roc को 120 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।