Задачка про воробья, дятла и синицу. - Prolog

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

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

1. Воробей, дятел и синица сидели на одной ветке. В каком порядке они сидели, если a. Синица сидела слева от дятла, а воробей слева от синицы b. Дятел сидел слева от синицы и справа от воробья c. Воробей сидел справа от синицы, а дятел справа от воробья. 2. Найти НОК (M, N), если НОК (M,N) = M*N/НОД(M,N)

Решение задачи: «Задачка про воробья, дятла и синицу.»

textual
Листинг программы
  1. DOMAINS
  2.  
  3. PREDICATES
  4. side(symbol,symbol, integer)
  5. order(symbol,symbol,symbol, integer)
  6.  
  7. CLAUSES
  8. side(sinica,dyatel,1).
  9. side(vorobey,sinica,1).
  10. side(dyatel,sinica,2).
  11. side(vorobey,dyatel,2).
  12. side(sinica,vorobey,3).
  13. side(vorobey,dyatel,3).
  14. order(X,Y,Z,N):- side(X,Y,N), side(Y,Z,N), X<>Y, Y<>Z.
  15. order(X,Y,Z,N):- side(X,Y,N), side(X,Z,N), X<>Y, Y<>Z.
  16.  
  17. GOAL
  18. order(X,Y,Z,N), write(N,": ",X," ",Y," ",Z), nl,
  19. fail.

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

  1. В данном коде используется язык программирования Prolog.
  2. Задача заключается в определении порядка следования воробья, дятла и синицы.
  3. Для решения задачи введен набор предикатов и утверждений.
  4. Предикат side(symbol,symbol, integer) используется для определения того, с какой стороны от другого символа находится символ.
  5. Утверждение side(sinica,dyatel,1) означает, что синица находится слева от дятла.
  6. Утверждение side(vorobey,sinica,1) означает, что воробей находится слева от синицы.
  7. Утверждение side(dyatel,sinica,2) означает, что дятел находится справа от синицы.
  8. Утверждение side(vorobey,dyatel,2) означает, что воробей находится справа от дятла.
  9. Утверждение side(sinica,vorobey,3) означает, что синица находится справа от воробья.
  10. Утверждение side(vorobey,dyatel,3) означает, что воробей находится справа от дятла.
  11. Предикат order(X,Y,Z,N) используется для определения порядка следования трех символов.
  12. Условие X<>Y, Y<>Z гарантирует, что символы не равны друг другу.
  13. Условие X<>Y, Y<>Z гарантирует, что символы не равны друг другу.
  14. Условие X<>Y, Y<>Z гарантирует, что символы не равны друг другу.
  15. Условие X<>Y, Y<>Z гарантирует, что символы не равны друг другу.
  16. В основной части программы находится цель order(X,Y,Z,N), которая вызывает предикат order с четырьмя аргументами.
  17. Далее следует вызов функции write(N,: ,X, ,Y, ,Z), которая выводит результат на экран.
  18. Затем вызывается функция nl, которая выводит символ новой строки.
  19. Вызов функции fail предназначен для обработки ошибок.
  20. В конце программы стоит точка fail, которая обозначает конец списка целей.

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


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

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

11   голосов , оценка 3.818 из 5

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

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

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