ট্র্যাক
/
Prolog
Prolog
/
অনুশীলনী
/
বাইনারি ধাঁধা
বাইনারি ধাঁধা

বাইনারি ধাঁধা

মধ্যম

ভূমিকা

আপনার দাদি সম্প্রতি বাইনারি পাজল সমাধান করতে দারুণ আগ্রহী হয়ে উঠেছেন। তিনি এতে ক্রমশ দক্ষ হয়ে উঠলেও বেশ নিয়মিতভাবেই আটকে যান। সহায়ক নাতি-নাতনি হিসেবে আপনি সিদ্ধান্ত নিলেন যে, এমন একটি ছোট অ্যাপ্লিকেশন বানাবেন যা যেকোনো বাইনারি পাজল সমাধান করতে পারে। এতে আপনি আপনার দাদিকে তার পরের চালের জন্য ইঙ্গিত দিতে পারবেন।

নির্দেশনা

আপনার কাজ হলো একটি বাইনারি পাজল সমাধান করা। প্রতিটি বাইনারি পাজলের ঠিক একটি সমাধান থাকে, যা এই নিয়মগুলো প্রয়োগ করে বের করা যায়:

  1. প্রতিটি ঘরে একটি শূন্য অথবা একটি এক থাকতে হবে।
  2. একই অঙ্ক দুটির বেশি পাশাপাশি থাকতে পারে না। সুতরাং, যদি দুটি পাশাপাশি ঘরে একই অঙ্ক থাকে, তবে সেই অঙ্কগুলোর পাশের ঘরগুলোতে অন্য অঙ্কটি থাকতে হবে।
  3. প্রতিটি সারি ও প্রতিটি কলামে সমান সংখ্যক শূন্য ও এক থাকতে হবে।
  4. প্রতিটি সারি ও কলাম অনন্য।

আপনাকে একটি অসম্পূর্ণ পাজল শূন্য ও একের সারি আকারে দেওয়া হবে, যেখানে অজানা মানগুলোর জন্য প্লেসহোল্ডার (_) থাকবে। লক্ষ্য হলো বাইনারি পাজলের নিয়মগুলো ডিফাইন করা, যা দিয়ে টেস্টগুলো প্লেসহোল্ডারগুলোর মান বের করতে পারবে (আপনি নিজে সেটা করবেন না)। আপনার ইমপ্লিমেন্টেশনে Prolog-এর Constraint Logic Programming over Finite Domains (CLP(FD)) ব্যবহার করতে হবে, যা এই ধরনের কাজের জন্য একেবারে উপযুক্ত।

Note

শুরু করতে সাহায্যের জন্য, স্টাব ফাইলে ইতিমধ্যেই clpfd লাইব্রেরি অন্তর্ভুক্ত আছে, এইভাবে:

:- use_module(library(clpfd)).
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Prolog Exercism

বাইনারি ধাঁধা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Prolog ট্র্যাকের 109টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।