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