ज़ेब्रा पहेली एक प्रसिद्ध तर्क पहेली है। इसमें पाँच घर हैं और हर घर का रंग अलग है। इन घरों में रहने वाले लोग भी अलग-अलग हैं: सबकी राष्ट्रीयता अलग है, सबके पालतू जानवर अलग हैं, सब अलग-अलग पेय पीते हैं और सबके शौक भी अलग-अलग हैं।
पहेली हल करने में आपकी मदद के लिए आपको 15 दावे दिए गए हैं, जो बताते हैं कि हल क्या है। लेकिन पहेली का हल तभी मिल पाएगा जब आप सभी दावों में दी गई जानकारी को आपस में मिलाएँगे।
ज़ेब्रा पहेली एक कंस्ट्रेंट सैटिस्फैक्शन प्रॉब्लम (CSP) है। ऐसी समस्या में आपके पास संभावित वैल्यू का एक समूह होता है और कुछ कंस्ट्रेंट होते हैं, जो तय करते हैं कि कौन-सी वैल्यू मान्य हैं। एक और प्रसिद्ध CSP सुडोकू है।
आपको ज़ेब्रा पहेली हल करके इन दो सवालों के जवाब ढूँढने हैं:
नीचे दिए गए सभी 15 दावे सत्य माने जाते हैं:
इसके अलावा, पाँचों घरों में से हर एक अलग रंग में रंगा गया है। उनमें रहने वाले लोगों की राष्ट्रीयता, पालतू जानवर, पेय और शौक भी अलग-अलग हैं।
इस पहेली के 24 अरब (5!⁵ = 24,883,200,000) संभावित हल हैं, इसलिए जितने हल हो सके, उतने हटाने की कोशिश कीजिए।
यह पहला अभ्यास है जिसमें पहले से लिखा हुआ एक पैकेज शामिल है।
ध्यान दीजिए कि इसमें pkgIndex.tcl फाइल मौजूद है और auto_path वेरिएबल में मौजूदा डायरेक्टरी भी शामिल की गई है।
इनकी मदद से package require कमांड पैकेज की सोर्स फाइल ढूँढ पाता है।
यह कोई बहुत अच्छे तरीके से लिखा हुआ पैकेज नहीं है: यह कई अलग-अलग जगहों से लिया गया कोड भर है।
interp alias कॉल का उद्देश्य इन खामियों को छिपाना और permutations पैकेज को इस्तेमाल करने में आसान बनाना है।
संदर्भ:
Exercism पर साइन अप कीजिए और Tcl को 135 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
24 अरब संभावित हलों में से ज़ेब्रा पहेली का हल ढूँढने के 8 अलग-अलग तरीके जानिए, जिनमें अमान्य क्रमपरिवर्तनों को जितनी जल्दी हो सके अनदेखा करना, AC-3 एल्गोरिदम, तर्क पर आधारित एक बहुत संक्षिप्त हल और यहाँ तक कि एक जेनेटिक एल्गोरिदम भी शामिल है!