জেব্রা পাজল একটি বিখ্যাত লজিক পাজল, যেখানে পাঁচটি বাড়ি থাকে এবং প্রতিটি বাড়ি আলাদা রঙে আঁকা। বাড়িগুলোর বাসিন্দারাও আলাদা: তাঁদের জাতীয়তা আলাদা, পোষা প্রাণী আলাদা, পানীয় আলাদা এবং শখও আলাদা।
পাজলটি সমাধান করতে আপনাকে সাহায্য করার জন্য ১৫টি বিবৃতি দেওয়া হয়েছে, যেগুলো সমাধানটি বর্ণনা করে। তবে কেবল সবগুলো বিবৃতির তথ্য একসাথে মিলিয়েই আপনি পাজলটির সমাধান খুঁজে পাবেন।
জেব্রা পাজল হলো একটি কনস্ট্রেইন্ট স্যাটিসফ্যাকশন প্রবলেম (CSP)। এমন সমস্যায় আপনার কাছে সম্ভাব্য মানের একটি সেট থাকে, আর থাকে কিছু শর্ত, যা নির্ধারণ করে দেয় কোন মানগুলো বৈধ। আরেকটি সুপরিচিত CSP হলো সুডোকু।
আপনার কাজ হলো জেব্রা পাজল সমাধান করে এই দুটি প্রশ্নের উত্তর বের করা:
নিচের ১৫টি বিবৃতি সবই সত্য বলে জানা আছে:
এছাড়াও, পাঁচটি বাড়ির প্রত্যেকটি আলাদা রঙে আঁকা, আর তাদের বাসিন্দারা ভিন্ন ভিন্ন দেশের, ভিন্ন ভিন্ন পোষা প্রাণী পোষে, ভিন্ন ভিন্ন পানীয় পান করে এবং ভিন্ন ভিন্ন শখে নিয়োজিত থাকে।
এখানে ২৪ বিলিয়ন (৫!⁵ = ২৪,৮৮৩,২০০,০০০) সম্ভাব্য সমাধান আছে, তাই যতটা সম্ভব সমাধান বাদ দেওয়ার চেষ্টা করুন।
এটি প্রথম অনুশীলনী যেখানে আগে থেকে লেখা একটি প্যাকেজ দেওয়া হয়েছে।
লক্ষ করুন, pkgIndex.tcl ফাইলটি রয়েছে এবং auto_path ভ্যারিয়েবলে বর্তমান ডিরেক্টরিটি অন্তর্ভুক্ত করা হয়েছে।
এর ফলে package require কমান্ডটি প্যাকেজের সোর্স ফাইলটি খুঁজে পেতে পারে।
এটি বিশেষ ভালোভাবে লেখা কোনো প্যাকেজ নয়: এটি বিভিন্ন জায়গা থেকে ধার করা কিছু কোড মাত্র।
interp alias কলটির উদ্দেশ্য হলো খুঁতগুলো লুকিয়ে রাখা এবং permutations প্যাকেজটি ব্যবহার করা সহজ করে তোলা।
তথ্যসূত্র:
Exercism-এ সাইন আপ করুন, Tcl ট্র্যাকের 135টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।
২৪ বিলিয়ন সম্ভাব্য সমাধান থেকে জেব্রা পাজলের সমাধান খুঁজে বের করার ৮টি ভিন্ন উপায় অন্বেষণ করুন, যার মধ্যে রয়েছে যত তাড়াতাড়ি সম্ভব অবৈধ পারমিউটেশন উপেক্ষা করা, AC-3 অ্যালগরিদম, একটি খুব সংক্ষিপ্ত লজিক-ভিত্তিক সমাধান এবং এমনকি একটি জেনেটিক অ্যালগরিদম!