Логическая задача про карты не в своем уме - Prolog

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

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

Помогите решить логическую задачу: «Тройка» думает, что «Туз» не в своём уме. «Четвёрка» думает, что «Тройка» и «Двойка» обе не могут быть не в своём уме. «Пятёрка» думает, что «Туз» и «Четвёрка» либо оба не в своём уме, либо оба в своём уме. «Шестёрка» думает, что «Туз» и «Двойка» оба в своём уме. «Семёрка» думает, что «Пятёрка» не в своём уме. «Валет» думает, что «Шестёрка» и «Семёрка» обе не могут быть не в своём уме. В своём ли уме «Валет»? Весь мозг уже себе выел)Заранее большущее спасибо.

Решение задачи: «Логическая задача про карты не в своем уме»

textual
Листинг программы
state(1). %в своем уме
state(0). %не в своем уме
 
mind(1, L):-member(tuz/0,L). %туз не в своем уме
mind(2, L):-member(troika/1,L) ; member(dvoika/1,L).%или тройки или двойка в своем уме
...
 
check_mind(1, N, L):-mind(N,L). %если автор гипотезы в своем уме, то она верна
check_mind(0, N, L):-not(mind(N,L)). %если не в своем, то не верна
 
solve(L):-
     L=[dvoika/A, troika/B, chetverka/C, pyaterka/D, shesterka/E, semerka/F, valet/G, tuz/H],
     state(A),.....,state(H),
     check_mind(B, 1, L), %проверяем гипотезу тройки
     ....

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 4.429 из 5