مسیرها
/
Prolog
Prolog
/
تمرین‌ها
/
پازل دودویی
پازل دودویی

پازل دودویی

متوسط

مقدمه

مادربزرگتان اخیراً علاقه‌ی زیادی به حل پازل‌های دودویی پیدا کرده است. هرچند در این کار بهتر و بهتر می‌شود، اما به‌طور مرتب گیر می‌کند. چون نوه‌ی دلسوزی هستید، تصمیم می‌گیرید برنامه‌ی کوچکی بسازید که بتواند هر پازل دودویی را حل کند. این‌طور می‌توانید برای حرکت بعدی به مادربزرگتان راهنمایی بدهید.

دستورالعمل‌ها

وظیفه‌ی شما حل یک پازل دودویی است. هر پازل دودویی دقیقاً یک جواب دارد که با اعمال این قواعد پیدا می‌شود:

  1. هر خانه باید یا صفر باشد یا یک.
  2. بیش از دو رقم یکسان نمی‌توانند مجاور هم باشند. بنابراین، اگر دو خانه‌ی مجاور رقم یکسان داشته باشند، خانه‌های کنار آن رقم‌ها باید رقم دیگر را داشته باشند.
  3. هر سطر و هر ستون باید تعداد برابری صفر و یک داشته باشد.
  4. هر سطر و ستون یکتاست.

پازلی ناتمام به‌شکل سطرهایی از صفر و یک به شما داده می‌شود، همراه با جانگهدارها (_) برای مقادیر نامعلوم. هدف این است که قواعد پازل دودویی را تعریف کنید تا تست‌ها بتوانند مقادیر جانگهدارها را پیدا کنند (این کار را خودتان انجام نمی‌دهید). پیاده‌سازی شما باید از برنامه‌نویسی منطقی با محدودیت روی دامنه‌های متناهی (CLP(FD)) زبان Prolog استفاده کند، که برای این نوع کارها ایده‌آل است.

Note

برای اینکه کار را راحت‌تر شروع کنید، فایل اولیه از قبل کتابخانه‌ی clpfd را از این طریق در خود دارد:

:- use_module(library(clpfd)).
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Prolog Exercism

آماده‌اید پازل دودویی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Prolog را همراه با 109 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.