Решение головоломки на Prolog

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Требуется помощь в решении задачи на Prolog : Пользуясь методом «образовать и проверить», напишите PROLOG-программу для решения следующей головоломки: Пять разноцветных домиков, пронумерованных с 1-го по 5-ый, расположены в ряд. Похоже, их хозяева перестарались, пытаясь приукрасить своё жильё снаружи. В каждом доме стены, окна и крыша выкрашены в разные цвета радужной палитры. Необходимо определить цвета «частей» каждого дома, если известно, что: 1. Дом с оранжевой крышей и синими стенами расположен не в центре. 2. В третьем доме зелёные окна. 3. Во втором доме жёлтые стены и красные окна. 4. Пятый дом под красной крышей. 5. Дом с оранжевыми стенами и голубыми окнами расположен рядом с домом с фиолетовыми стенами под зелёной крышей. 6. Среди этих домов есть дома с голубой и жёлтой крышей. 7. Кому-то из хозяев очень нравятся стены красного цвета, а кто-то умудрился покрасить окна своего дома в синий цвет. 8. Фиолетовые окна смотрятся просто ужасно. Буду признателен за любую помощь!

Решение задачи: «Решение головоломки на Prolog»

textual
Листинг программы
form_check_houses([], Houses) :-
    memberchk1( house(Num, [blue, _, orange]), Houses ),
    %\+ Num = 3,
    memberchk1( house(Num1, [orange, cyan, _]), Houses ),
    memberchk1( house(Num2, [violet, _, green]), Houses ),
    abs(Num1 - Num2) =:= 1,
    %memberchk1( house(_, [_, _, cyan]), Houses ),
    memberchk1( house(_, [_, _, yellow]), Houses ),
    memberchk1( house(_, [red, _, _]), Houses ),
    memberchk1( house(_, [_, blue, _]), Houses ),
    %memberchk1( house(_, [_, violet, _]), Houses ),
    true.

Оцени полезность:

10   голосов , оценка 4.1 из 5