इस अभ्यास में आपको एक ऐसा प्रोग्राम बनाना है जो बताता है कि टिक-टैक-टो के किसी खेल की स्थिति क्या है। (आप इस खेल को "noughts and crosses" या "Xs and Os" के नाम से भी जानते होंगे।)
यह खेल 3×3 के ग्रिड पर खेला जाता है।
खिलाड़ी बारी-बारी से ग्रिड पर X और O रखते हैं।
खेल तब खत्म होता है जब कोई एक खिलाड़ी एक ही पंक्ति, स्तंभ या ग्रिड के किसी विकर्ण पर तीन चिह्न लगाकर जीत जाए, या जब पूरा ग्रिड भर जाए।
इस अभ्यास में हम मान लेंगे कि खेल की शुरुआत X से होती है।
आपको यह पता लगाना है कि दिया गया खेल किस स्थिति में है।
खेल की तीन संभावित स्थितियाँ हैं:
अगर दिया गया बोर्ड अमान्य है, तो एक उपयुक्त एरर फेंकिए।
अगर कोई बोर्ड इन शर्तों को पूरा करता है, तो वह अमान्य है:
X से होती है)। | |
X | |
___|___|___
| |
| X | O
___|___|___
| |
O | X |
| |
| |
X | O | X
___|___|___
| |
X | X | O
___|___|___
| |
O | X | O
| |
| |
X | X | X
___|___|___
| |
| O | O
___|___|___
| |
| |
| |
| |
O | O | X
___|___|___
| |
| |
___|___|___
| |
| |
| |
| |
X | X | X
___|___|___
| |
O | O | O
___|___|___
| |
| |
| |
कभी-कभी एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर का स्रोत क्या है। इससे आपका कोड पढ़ने में आसान हो जाता है और डिबगिंग में काफी मदद मिलती है। जिन स्थितियों में आपको पता हो कि एरर का स्रोत एक खास टाइप का ही होगा, वहाँ आप पहले से मौजूद एरर टाइप में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी एक अर्थपूर्ण संदेश शामिल करना चाहिए।
Tic Tac Toe का एक मान्य खेल तब खत्म होता है जब कोई एक खिलाड़ी जीत जाता है।
अगर दोनों खिलाड़ी जीत की स्थिति में हों, तो इस अभ्यास में आपसे यह अपेक्षा है कि आप अपने हल में raise स्टेटमेंट का इस्तेमाल कीजिए और एक ValueError "फेंकिए"।
अगर किसी एक खिलाड़ी के बारे में यह माना जाए कि उसने लगातार दो बार अपनी बारी खेली, या जिसकी बारी दूसरी थी वह पहली चाल चल दे, तो आपके कोड से भी यह अपेक्षित है कि वह एक ValueError फेंके।
संदेश के साथ कोई ValueError उठाने के लिए, उस संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:
# Example when player O goes before player X.
raise ValueError("Wrong turn order: O started")
# Example when player X goes twice.
raise ValueError("Wrong turn order: X went twice")
# Example when player X wins AND player O wins.
raise ValueError("Impossible board: game should have ended after the game was won")
टेस्ट यह जाँचेंगे कि एरर संदेश बिल्कुल वही हो, इसलिए अपेक्षित परिणाम ध्यान से पढ़िए।
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।