Как можно переписать код, чтобы при невыполнении правила что-то выводилось? - Prolog

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

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

Как можно переписать вывод, или где-то что-то добавить, чтобы после выполнения этого кода вывелось "No". Т.е. у Димы нет компьютера, он останавливается на первом правиле, и ничего не выводит. Но если написать, что у него есть компьютер, но нет игры, то уже выводит "No"
Листинг программы
  1. implement main
  2. open core
  3. domains
  4. name = string.
  5. class facts
  6. % факты:
  7. wants_play: (name). 1: Субъект хочет поиграть
  8. have_internet: (name). 2: У субъекта есть интернет
  9. have_game: (name). 3: У субъекта есть игра
  10. have_desktop(name).
  11. have_laptop(name).
  12. class predicates
  13. % действия:
  14. turn_on_PC: (name) nondeterm anyflow. 1: Субъект включает ПК
  15. download_game: (name) nondeterm anyflow. 2: Субъект скачивает игру
  16. plays_game: (name) nondeterm anyflow. % Д3: Субъект играет
  17.  
  18. clauses
  19. turn_on_PC(Name):- wants_play(Name), have_desktop(Name);have_laptop(Name).
  20. plays_game(Name):- wants_play(Name), turn_on_PC(Name), have_game(Name);download_game(Name).
  21. download_game(Name):- wants_play(Name), turn_on_PC(Name), have_internet(Name), not(have_game(Name)).
  22. clauses
  23. wants_play("Dima").
  24. clauses
  25. run() :-
  26. console::nl,
  27. console::write(" -- Дима будет играть? "),
  28. console::nl,
  29. foreach turn_on_PC("Dima") do
  30. plays_game("Dima"),!,console::write("Yes"); console::write("No")
  31. end foreach.
  32. end implement main
  33. goal
  34. mainExe::run(main::run).

Решение задачи: «Как можно переписать код, чтобы при невыполнении правила что-то выводилось?»

textual
Листинг программы
  1. clauses
  2. turn_on_PC(Name):- wants_play(Name), have_desktop(Name);have_laptop(Name).
  3. plays_game(Name):- if wants_play(Name), turn_on_PC(Name), (have_game(Name);download_game(Name)) then console::write("Yes") else console::write("No") end if.
  4. download_game(Name):- wants_play(Name), turn_on_PC(Name), have_internet(Name), not(have_game(Name)).
  5.  
  6. clauses
  7. wants_play("Dima").
  8. wants_play("Lena").
  9. have_desktop("Lena").
  10. have_game("Lena").
  11.  
  12. clauses
  13.  
  14.     run() :-
  15.     console::init(),
  16.     console::nl,
  17.     console::write(" -- Lena будет играть? "), console::nl,
  18.     plays_game("Lena"), console::nl,
  19.     succeed().
  20. end implement main
  21.  
  22. goal
  23.     mainExe::run(main::run).

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


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

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

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

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

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

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