align="justify"> nondeterm Рішення2 (спісок_вердіктов)
nondeterm
nondeterm підсумок (персонаж)
nondeterm унікальний_ітог (персонаж)
CLAUSES
одін_із (Що, [Що | _]).
одін_із (Що, [_ | Хвіст]):-одін_із (Що, Хвіст).
% Кількість
колічество_вхожденій (_, [], 0).
колічество_вхожденій (Що, [Що | Хвіст], Число): -
Число = Чісло_в_хвосте +1.
колічество_вхожденій (Що, [Щось | Хвіст], Число): -
not (Що = Щось),
колічество_вхожденій (Що, Хвіст, Число).
колічество_елементов ([], 0).
Кількість = Колічество_в_хвосте +1.
% Пошук перетину множин
перетин ([], _, []).
перетин ([Head1 | Tail1], List2, [Head1 | TailOut]): -
одін_із (Head1, List2), перетин (Tail1, List2, TailOut).
перетин ([Head1 | Tail1], List2, ListOut) :-( одін_із (Head1, List2)), перетин (Tail1, List2, ListOut).
одін_із_ответов (так).
одін_із_ответов (немає).
одін_із_участніков (а).
одін_із_участніков (б).
одін_із_участніков (в).
вибрать_унікальние ([], []).
not (одін_із (Голова, Хвіст)), вибрать_унікальние (Хвіст, хвіст).
вибрать_унікальние ([Голова | Хвіст], список): -
сказав (персонаж (а, Тип), 1, процес (_, Відповідь, _, _, _)): -
Відповідь = "так", Тип = "шпигун";
Відповідь = "ні", not (Тип = "шпигун").
сказав (персонаж (б, _), 1, Процес): -
Процес = процес (Персонажі, _, Відповідь, _, _),
Відповідь = "так", А = персонаж (а, _), одін_із (А, Персонажі), сказав (А, 1, Процес);
Процес = процес (Персонажі, _, Відповідь, _, _),
Відповідь = "ні", А = персонаж (а, _), одін_із (А, Персонажі), not (сказав (А, 1, Процес)).
сказав (Персонаж, 2, Процес): -
Процес = процес (Персонажі, _, _, _, Відповідь),
Відповідь = "так", одін_із (Сусід, Персонажі), not (Сусід = Персонаж), Сусід = персонаж (_, шпигун);
Процес = процес (Персонажі, _, _, _, Відповідь),
Відповідь = "ні", одін_із (Сусід, Персонажі), not (Сусід = Персонаж), Сусід = персонаж (_, Тип), not (Тип = "шпигун"). p>
перевірка (Персонаж, Номер, Процес): - Персонаж = персонаж (_, лицар), сказав (Персонаж, Номер,...