पिछले कुछ हफ़्तों से एमआईए बने रहने के लिए क्षमा करें। मैंने घर बदल लिया है और नई नौकरी कर ली है, इसलिए इस दौरान चुनौतियों में भाग लेने का मौका नहीं मिला।
प्रत्येक सप्ताह मोहम्मद एस. अनवर द वीकली चैलेंज भेजते हैं, जो हम सभी के लिए दो साप्ताहिक कार्यों के समाधान के साथ आने का एक मौका है। मेरे समाधान पहले पायथन में लिखे गए हैं, और फिर पर्ल में परिवर्तित किए गए हैं। यह हम सभी के लिए कोडिंग का अभ्यास करने का एक शानदार तरीका है।
चुनौती, मेरे समाधान
आपको निर्देशांक दिए गए हैं, एक स्ट्रिंग जो शतरंज की बिसात के एक वर्ग के निर्देशांक का प्रतिनिधित्व करती है जैसा कि नीचे दिखाया गया है:
यदि वर्ग हल्का है तो सत्य और यदि वर्ग गहरा है तो गलत लौटाने के लिए एक स्क्रिप्ट लिखें।
यह अपेक्षाकृत सीधा है। पहली चीज जो मैं करता हूं वह यह जांचता है कि प्रदान की गई स्थिति वैध है (पहला अक्षर ए-एच है और दूसरा अक्षर 1 और 8 के बीच है)।
मैं फिर जाँचता हूँ कि क्या पहला अक्षर a, c, e या g है और संख्या सम है, या पहला अक्षर b, d, f या h है और संख्या विषम है, तो सही लौटें। अन्यथा झूठी वापसी करें।
def check_color(coords: str) -> bool: if not re.search('^[a-h][1-8]$', coords): raise ValueError('Not a valid chess coordinate!') if coords[0] in ('a', 'c', 'e', 'g') and int(coords[1]) % 2 == 0: return True if coords[0] in ('b', 'd', 'f', 'h') and int(coords[1]) % 2 == 1: return True return False
$ ./ch-1.py d3 true $ ./ch-1.py g5 false $ ./ch-1.py e6 true
शतरंज में एक शूरवीर अपनी वर्तमान स्थिति से दो पंक्तियों या स्तंभों के अलावा एक स्तंभ या पंक्ति दूर किसी भी वर्ग में जा सकता है। तो नीचे दिए गए चित्र में, यदि यह S से प्रारंभ होता है, तो यह E चिह्नित किसी भी वर्ग में जा सकता है।
एक स्क्रिप्ट लिखें जो प्रारंभिक स्थिति और समाप्ति स्थिति लेती है और आवश्यक चालों की न्यूनतम संख्या की गणना करती है।
यह अधिक विस्तृत है। मैं निम्नलिखित वेरिएबल्स से शुरू करता हूं:
def knights_move(start_coord: str, end_coord: str) -> int: for coord in (start_coord, end_coord): if not re.search('^[a-h][1-8]$', coord): raise ValueError( f'The position {coord} is not a valid chess coordinate!') deltas = ([2, 1], [2, -1], [-2, 1], [-2, -1], [1, 2], [1, -2], [-1, 2], [-1, -2]) coords = [convert_coord_to_list(start_coord)] target = convert_coord_to_list(end_coord) moves = 1 seen = []
मेरे पास वर्तमान कोर्डर्स सूची और डेल्टा सूची का एक डबल लूप है। एक वैरिएबल new_pos सेट करें जो नाइट के लिए नए निर्देशांक का प्रतिनिधित्व करता है। यदि यह बोर्ड के बाहर की स्थिति या समन्वय की ओर ले जाता है जहां हम पहले ही जा चुके हैं, तो मैं इसे छोड़ देता हूं। यदि यह लक्ष्य पर पहुँचता है, तो मैं चाल मान लौटाता हूँ।
लूप के बाद, मैं निर्देशांक सूची को पुनरावृत्तियों के माध्यम से एकत्र किए गए निर्देशांक पर रीसेट करता हूं, और चाल मान को एक से बढ़ाता हूं। यह तब तक जारी रहता है जब तक हम लक्ष्य निर्देशांक तक नहीं पहुंच जाते।
while True: new_coords = [] for coord in coords: for delta in deltas: new_pos = (coord[0] delta[0], coord[1] delta[1]) if not 0उदाहरण
$ ./ch-2.py g2 a8 4 $ ./ch-2.py g2 h2 3
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3