জেব্রা পাজল একটি বিখ্যাত লজিক পাজল, যেখানে পাঁচটি বাড়ি থাকে এবং প্রতিটি বাড়ি আলাদা রঙে আঁকা। বাড়িগুলোর বাসিন্দারাও আলাদা: তাঁদের জাতীয়তা আলাদা, পোষা প্রাণী আলাদা, পানীয় আলাদা এবং শখও আলাদা।
পাজলটি সমাধান করতে আপনাকে সাহায্য করার জন্য ১৫টি বিবৃতি দেওয়া হয়েছে, যেগুলো সমাধানটি বর্ণনা করে। তবে কেবল সবগুলো বিবৃতির তথ্য একসাথে মিলিয়েই আপনি পাজলটির সমাধান খুঁজে পাবেন।
জেব্রা পাজল হলো একটি কনস্ট্রেইন্ট স্যাটিসফ্যাকশন প্রবলেম (CSP)। এমন সমস্যায় আপনার কাছে সম্ভাব্য মানের একটি সেট থাকে, আর থাকে কিছু শর্ত, যা নির্ধারণ করে দেয় কোন মানগুলো বৈধ। আরেকটি সুপরিচিত CSP হলো সুডোকু।
আপনার কাজ হলো জেব্রা পাজল সমাধান করে এই দুটি প্রশ্নের উত্তর বের করা:
নিচের ১৫টি বিবৃতি সবই সত্য বলে জানা আছে:
এছাড়াও, পাঁচটি বাড়ির প্রত্যেকটি আলাদা রঙে আঁকা, আর তাদের বাসিন্দারা ভিন্ন ভিন্ন দেশের, ভিন্ন ভিন্ন পোষা প্রাণী পোষে, ভিন্ন ভিন্ন পানীয় পান করে এবং ভিন্ন ভিন্ন শখে নিয়োজিত থাকে।
এখানে ২৪ বিলিয়ন (৫!⁵ = ২৪,৮৮৩,২০০,০০০) সম্ভাব্য সমাধান আছে, তাই যতটা সম্ভব সমাধান বাদ দেওয়ার চেষ্টা করুন।
একটি মাত্র ফাংশন, SolvePuzzle, ডিফাইন করুন, যা দুটি স্ট্রিং-সহ একটি সমাধান রিটার্ন করে; স্ট্রিং দুটির মান হবে জেব্রা পাজলের "কে পানি পান করে?" এবং "জেব্রার মালিক কে?" প্রশ্ন দুটির উত্তর। প্রতিটি উত্তর হবে বাসিন্দাদের জাতীয়তাগুলোর মধ্যে একটি: Englishman, Spaniard, Ukrainian, Norwegian অথবা Japanese.
অবশ্যই, আপনি টেস্ট প্রোগ্রামে উঁকি দিয়ে প্রত্যাশিত সমাধানটি দেখে নিলে সহজেই একটি এক লাইনের ফাংশন লিখে দিতে পারেন। কিন্তু লক্ষ্য হলো ধাঁধার প্রদত্ত তথ্য ও সীমাবদ্ধতা ব্যবহার করে এমন একটি অ্যালগরিদম তৈরি করা, যা সঠিক দুইটি উত্তর নির্ণয় করে।
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
২৪ বিলিয়ন সম্ভাব্য সমাধান থেকে জেব্রা পাজলের সমাধান খুঁজে বের করার ৮টি ভিন্ন উপায় অন্বেষণ করুন, যার মধ্যে রয়েছে যত তাড়াতাড়ি সম্ভব অবৈধ পারমিউটেশন উপেক্ষা করা, AC-3 অ্যালগরিদম, একটি খুব সংক্ষিপ্ত লজিক-ভিত্তিক সমাধান এবং এমনকি একটি জেনেটিক অ্যালগরিদম!