ज़ेब्रा पहेली एक प्रसिद्ध तर्क पहेली है। इसमें पाँच घर हैं और हर घर का रंग अलग है। इन घरों में रहने वाले लोग भी अलग-अलग हैं: सबकी राष्ट्रीयता अलग है, सबके पालतू जानवर अलग हैं, सब अलग-अलग पेय पीते हैं और सबके शौक भी अलग-अलग हैं।
पहेली हल करने में आपकी मदद के लिए आपको 15 दावे दिए गए हैं, जो बताते हैं कि हल क्या है। लेकिन पहेली का हल तभी मिल पाएगा जब आप सभी दावों में दी गई जानकारी को आपस में मिलाएँगे।
ज़ेब्रा पहेली एक कंस्ट्रेंट सैटिस्फैक्शन प्रॉब्लम (CSP) है। ऐसी समस्या में आपके पास संभावित वैल्यू का एक समूह होता है और कुछ कंस्ट्रेंट होते हैं, जो तय करते हैं कि कौन-सी वैल्यू मान्य हैं। एक और प्रसिद्ध CSP सुडोकू है।
आपको ज़ेब्रा पहेली हल करके इन दो सवालों के जवाब ढूँढने हैं:
नीचे दिए गए सभी 15 दावे सत्य माने जाते हैं:
इसके अलावा, पाँचों घरों में से हर एक अलग रंग में रंगा गया है। उनमें रहने वाले लोगों की राष्ट्रीयता, पालतू जानवर, पेय और शौक भी अलग-अलग हैं।
इस पहेली के 24 अरब (5!⁵ = 24,883,200,000) संभावित हल हैं, इसलिए जितने हल हो सके, उतने हटाने की कोशिश कीजिए।
बस एक फंक्शन बनाइए, SolvePuzzle, जो एक हल लौटाता है। इस हल में दो स्ट्रिंग होती हैं, जिनकी वैल्यू ज़ेब्रा पहेली के इन दो सवालों के जवाब होती हैं: "Who drinks water?" और "Who owns the Zebra?"। हर जवाब निवासी की इनमें से एक राष्ट्रीयता होगा: Englishman, Spaniard, Ukrainian, Norwegian, या Japanese.
स्पष्ट है कि अगर आप टेस्ट प्रोग्राम में झाँककर देख लें कि अपेक्षित हल क्या है, तो आप सिर्फ एक लाइन वाला फंक्शन लिख सकते हैं। लेकिन लक्ष्य यह है कि आप एक एल्गोरिदम बनाएँ, जो पहेली के दिए गए तथ्यों और बंधनों का इस्तेमाल करके सही दो जवाब निकालता है।
Exercism पर साइन अप कीजिए और Go को 34 कॉन्सेप्ट165 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
24 अरब संभावित हलों में से ज़ेब्रा पहेली का हल ढूँढने के 8 अलग-अलग तरीके जानिए, जिनमें अमान्य क्रमपरिवर्तनों को जितनी जल्दी हो सके अनदेखा करना, AC-3 एल्गोरिदम, तर्क पर आधारित एक बहुत संक्षिप्त हल और यहाँ तक कि एक जेनेटिक एल्गोरिदम भी शामिल है!