আপনার দাদি সম্প্রতি বাইনারি পাজল সমাধান করতে দারুণ আগ্রহী হয়ে উঠেছেন। তিনি এতে ক্রমশ দক্ষ হয়ে উঠলেও বেশ নিয়মিতভাবেই আটকে যান। সহায়ক নাতি-নাতনি হিসেবে আপনি সিদ্ধান্ত নিলেন যে, এমন একটি ছোট অ্যাপ্লিকেশন বানাবেন যা যেকোনো বাইনারি পাজল সমাধান করতে পারে। এতে আপনি আপনার দাদিকে তার পরের চালের জন্য ইঙ্গিত দিতে পারবেন।
আপনার কাজ হলো একটি বাইনারি পাজল সমাধান করা। প্রতিটি বাইনারি পাজলের ঠিক একটি সমাধান থাকে, যা এই নিয়মগুলো প্রয়োগ করে বের করা যায়:
আপনাকে একটি অসম্পূর্ণ পাজল শূন্য ও একের সারি আকারে দেওয়া হবে, যেখানে অজানা মানগুলোর জন্য প্লেসহোল্ডার (_) থাকবে।
লক্ষ্য হলো বাইনারি পাজলের নিয়মগুলো ডিফাইন করা, যা দিয়ে টেস্টগুলো প্লেসহোল্ডারগুলোর মান বের করতে পারবে (আপনি নিজে সেটা করবেন না)।
আপনার ইমপ্লিমেন্টেশনে Prolog-এর Constraint Logic Programming over Finite Domains (CLP(FD)) ব্যবহার করতে হবে, যা এই ধরনের কাজের জন্য একেবারে উপযুক্ত।
শুরু করতে সাহায্যের জন্য, স্টাব ফাইলে ইতিমধ্যেই clpfd লাইব্রেরি অন্তর্ভুক্ত আছে, এইভাবে:
:- use_module(library(clpfd)).
Exercism-এ সাইন আপ করুন, Prolog ট্র্যাকের 109টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।