Головоломка про зебру - це відома логічна головоломка, у якій є пʼять будинків, кожен пофарбований в інший колір. У будинках живуть різні мешканці: вони мають різні національності, тримають різних улюбленців, пʼють різні напої та мають різні захоплення.
Щоб допомогти розвʼязати головоломку, нам дають 15 тверджень, які описують розвʼязок. Однак лише поєднавши інформацію з усіх тверджень, ми зможемо знайти розвʼязок головоломки.
Головоломка про зебру належить до задач задоволення обмежень (CSP). У такій задачі ми маємо набір можливих значень і набір обмежень, які визначають, які з цих значень припустимі. Ще одна відома задача задоволення обмежень - судоку.
Розвʼяжіть задачу про зебру та знайдіть відповіді на ці два запитання:
Про всі наведені нижче 15 тверджень відомо, що вони правдиві:
Крім того, кожен із пʼяти будинків пофарбований в інший колір, а їхні мешканці різного національного походження, тримають різних тварин, пʼють різні напої та мають різні захоплення.
Існує 24 мільярди (5!⁵ = 24,883,200,000) можливих розвʼязків, тож спробуйте відкинути якомога більше з них.
У цій вправі нам потрібно опрацювати колекцію даних. Ми можемо спростити свій код, використавши ліниві послідовності, щоб підвищити продуктивність. Докладніше див. ліниве обчислення.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Visual Basic, а також 113 вправ та справжнє наставництво від людей, і все це безкоштовно.
Розгляньмо 8 різних способів знайти розвʼязок Загадки про зебру серед 24 мільярдів можливих варіантів, зокрема ігнорування неправильних перестановок якомога раніше, алгоритм AC-3, дуже стислий розвʼязок на основі логіки і навіть генетичний алгоритм!