Логическая задача про Чука и Гека - Prolog

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

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

3. Может быть, вы и не поверите, но в одном городке жили два чудака — Чук и Гек. Чук совершенно не мог говорить правду по понедельникам, вторникам и средам, хотя в остальные дни он неизменно был правдив. А Гек врал по вторникам, четвергам и субботам, но в другие дни он говорил только правду. Как-то я повстречал эту неразлучную пару и спросил одного из них: − Скажи пожалуйста, как тебя зовут? Тот без малейшего колебания ответил: − Чук. А скажи-ка мне, какой сегодня день недели? –Вчера было воскресенье, сказал мой собеседник. − А завтра будет пятница, − добавил его приятель. − Подожди, как же так? − изумился я, обращаясь к приятелю моего собеседника. – Ты уверен, что говоришь правду? − Я всегда говорю правду по средам, − услышал я в ответ. Решив, что больше со мной говорить не о чем, приятели пошли дальше, оставив меня в полном недоумении. Но. подумав, я все-таки сообразил, кто из двух друзей был Чук, а кто − Гек. Между прочим, по разговору можно установить и день недели, в который я встретился с ними. Попробуйте сообразить и вы.

Решение задачи: «Логическая задача про Чука и Гека»

textual
Листинг программы
  1. day(chuk,pn,0).
  2. day(chuk,vt,0).
  3. day(chuk,cr,0).
  4. day(chuk,ch,1).
  5. day(chuk,pt,1).
  6. day(chuk,cb,1).
  7. day(chuk,vc,1).
  8. day(gek,pn,1).
  9. day(gek,vt,0).
  10. day(gek,cr,1).
  11. day(gek,ch,0).
  12. day(gek,pt,1).
  13. day(gek,cb,0).
  14. day(gek,vc,1).
  15.  
  16. other(gek, chuk).
  17. other(chuk, gek).
  18.  
  19. test1(0, First) :- First \= chuk.
  20. test1(1, First) :- First = chuk.
  21.  
  22. test2(0, Today) :- Today \= pn.
  23. test2(1, Today) :- Today = pn.
  24.  
  25. test3(0, Today) :- Today \= ch.
  26. test3(1, Today) :- Today = ch.
  27.  
  28. test4(SecondTrue, Second) :-
  29.     day(Second, cr, SecondTrue).
  30.  
  31.  
  32. solve :-
  33.     day(First, Today, FirstTrue),
  34.     other(First, Second),
  35.     day(Second, Today, SecondTrue),
  36.    
  37.     test1(FirstTrue, First),
  38.     test2(FirstTrue, Today),
  39.     test3(SecondTrue, Today),
  40.     test4(SecondTrue, Second),
  41.    
  42.     write('First: '), write(First), nl,
  43.     write('Second: '), write(Second), nl,
  44.     write('Today: '), write(Today), nl,
  45.     fail.
  46. solve :-
  47.     write('--- End of solutions'), nl.

Объяснение кода листинга программы

  1. Переменные:
    • chuk
    • gek
    • pn (предположительно имя)
    • vt (предположительно имя)
    • cr (предположительно имя)
    • ch (предположительно имя)
    • pt (предположительно имя)
    • cb (предположительно имя)
    • vc (предположительно имя)
    • First (первый элемент)
    • Second (второй элемент)
    • Today (предположительно имя)
    • FirstTrue (значение первого элемента)
    • SecondTrue (значение второго элемента)
  2. Код описывает логическую задачу про Чука и Гека. Предполагается, что переменные chuk и gek обозначают двух человек, а переменные pn, vt, cr, ch, pt, cb и vc обозначают различные свойства или характеристики этих людей.
  3. Программа содержит несколько правил для определения значений переменных и проверки их на соответствие определенным условиям. Например, правило day(chuk,pn,0) говорит о том, что если pn равно нулю, то у Чука есть свойство pn. Аналогично для других правил.
  4. Программа также содержит несколько правил для проверки истинности условий. Например, правило test1(0, First) говорит о том, что если First не равно chuk, то условие считается истинным. Аналогично для других правил.
  5. Главная часть программы представляет собой цикл solve, который рекурсивно генерирует все возможные комбинации значений переменных и проверяет их на соответствие условиям. Если найдено решение, программа выводит значения переменных на экран. Если решений нет, программа выводит сообщение --- End of solutions.

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут