ट्री बनाने वाले एल्गोरिदम को रीफैक्टर कीजिए।
कुछ वेब-फोरम का लेआउट ट्री जैसा होता है, इसलिए पोस्ट ट्री के रूप में दिखाए जाते हैं। लेकिन पोस्ट आम तौर पर डेटाबेस में रिकॉर्ड के ऐसे समूह के रूप में संग्रहीत होते हैं जिसमें कोई क्रम नहीं होता। इसलिए जब उपयोगकर्ता को पोस्ट दिखाए जाते हैं, तो ट्री की संरचना फिर से बनानी पड़ती है।
आपको कोड के एक ऐसे हिस्से को रीफैक्टर करना है जो काम तो करता है, लेकिन धीमा और बदसूरत है। यह कोड ऐसे रिकॉर्ड के लिए ट्री बनाने का तर्क लागू करता है जो बहुत अमूर्त होते हैं। इन रिकॉर्ड में सिर्फ एक ID संख्या और एक पैरेंट ID संख्या होती है। ID संख्या हमेशा 0 (सम्मिलित) और रिकॉर्ड ऐरे की लंबाई (असम्मिलित) के बीच होती है। हर रिकॉर्ड का पैरेंट ID उसके अपने ID से छोटा होता है, सिवाय रूट रिकॉर्ड के, जिसका पैरेंट ID उसके अपने ID के बराबर होता है।
ट्री का एक उदाहरण:
root (ID: 0, parent ID: 0)
|-- child1 (ID: 1, parent ID: 0)
| |-- grandchild1 (ID: 2, parent ID: 1)
| +-- grandchild2 (ID: 4, parent ID: 1)
+-- child2 (ID: 3, parent ID: 0)
| +-- grandchild3 (ID: 6, parent ID: 3)
+-- child3 (ID: 5, parent ID: 0)
कभी-कभी एक एक्सेप्शन उठाना ज़रूरी होता है। ऐसा करते समय आपको हमेशा एक अर्थपूर्ण एरर संदेश शामिल करना चाहिए, जो बताए कि एरर का स्रोत क्या है। इससे आपका कोड पढ़ने में आसान हो जाता है और डीबगिंग में काफी मदद मिलती है। जिन स्थितियों में आप जानते हैं कि एरर का स्रोत एक निश्चित टाइप होगा, वहाँ आप अंतर्निहित एरर टाइप में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी एक अर्थपूर्ण संदेश शामिल करना चाहिए।
इस अभ्यास में आपको यह बदलना है कि अमान्य ट्री इनपुट के लिए ValueError 'फेंकने' के लिए raise स्टेटमेंट कहाँ और कैसे इस्तेमाल किया जाता है। टेस्ट तभी पास होंगे जब कोड उचित exception को raise करे और उसके साथ एक उचित संदेश भी शामिल करे।
Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।