fork download
  1. collects(wolf, fauna).
  2. collects(nuff, flora).
  3. collects(nif, sport).
  4. collects(nafa, cosmos).
  5.  
  6. left_of(wolf, nafa).
  7. right_of(nif, cosmos).
  8. opposite(nif, nafa).
  9.  
  10. % Кто собирает какие марки?
  11. who_collects_what :-
  12. collects(Who, What),
  13. format('~w собирает ~w.\n', [Who, What]),
  14. who_collects_what.
  15.  
  16. % Кто сидит где? (Информация неполная из-за противоречий)
  17. location :-
  18. (left_of(X, Y) ; right_of(X, Y) ; opposite(X, Y)), % Проверяем все отношения
  19. format('~w находится ~w ~w.\n', [X, (get_relation(X,Y,Rel)), Y]), % Используем предикат get_relation
  20. location.
  21.  
  22. get_relation(X, Y, Rel) :-
  23. left_of(X, Y), Rel = слева_от ;
  24. right_of(X, Y), Rel = справа_от ;
  25. opposite(X, Y), Rel = напротив.
  26.  
  27.  
  28. % Кто не собирает марки "Спорт"? (Исправлено)
  29. who_does_not_collect_sport :-
  30. collects(Person, _), % Находим всех, кто что-то собирает
  31. \+ collects(Person, sport),
  32. format('~w не собирает "Спорт".\n', [Person]),
  33. who_does_not_collect_sport.
  34.  
  35.  
Success #stdin #stdout #stderr 0.02s 6960KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Warning: /home/LOQBfr/prog:18:
	Singleton variables: [Rel]
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit