Адаптировать метод поиска в глубину для VP7 - Prolog

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

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

Препод заставил адаптировать код для visual prolog 7
Листинг программы
  1. domains
  2. i=integer
  3. s=symbol
  4. list=s*
  5. database
  6. db_path(s,s,list,i)
  7. predicates
  8. path(s,s,list,i)
  9. path1(s,list,i,list,i)
  10. member(s,list)
  11. arca(s,s,i)
  12. db0(s,s)
  13. db(s,s)
  14. run(s,s)
  15. start
  16. goal
  17. start.
  18. clauses
  19. start:-makewindow(1,7,7,"Expert System",1,3,22,71),clearwindow,
  20. write("Enter the name of cities"),nl,
  21. write("The first city: "), readln(First),nl,
  22. write("The second city: "), readln(Second),nl,
  23. run(First,Second),readchar(_).
  24. arca (a,b,1).
  25. arca(a,c,1).
  26. arca(b,e,1).
  27. arca(b,d,1).
  28. arca(c,d,1).
  29. arca(c,g,1).
  30. arca(c,f,1).
  31. arca(d,e,1).
  32. arca(e,f,1).
  33. arca(f,x,1).
  34. run(Start,End):-db0(Start,End), db(Start,End), db_path(Start,End,MP,MD),
  35. write("Optimum way: "),write(MP),nl,
  36. write("Length of an optimum way="),write(MD),
  37. nl,nl.
  38. path(A,Z,Path,C):- path1(A,[Z],0,Path,C).
  39. path1(A,[A|Path1],C,[A|Path1],C).
  40. path1(A,[Y|Path1],C1,Path,C):- arca(X,Y,CXY), not(member(X,Path1)),C2=C1+CXY, path1(A,[X,Y|Path1],C2,Path,C).
  41. member(Head,[Head|_]).
  42. member(Head,[_|Tail]):- member(Head,Tail).
  43. db0(X,Y) :-path(X,Y,P,C), assert(db_path(X,Y,P,C)).
  44. db(X,Y):-db_path(X,Y,P,C), path(X,Y,MP,MC), MC<C,!,
  45. retract(db_path(X,Y,P,C)), assert(db_path(X,Y,MP,MC)), db(X,Y).
  46. db(_,_).
Исходя из ошибок компилятора получилось что-то вроде этого
Листинг программы
  1. implement main
  2. open core
  3. domains
  4. i=integer.
  5. s=symbol.
  6. list=s*.
  7. facts
  8. db_path:(s,s,list,i).
  9. class predicates
  10. path:(s,s,list,i).
  11. path1:(s,list,i,list,i).
  12. member:(s,list).
  13. arca:(s,s,i).
  14. db0:(s,s).
  15. db:(s,s).
  16. start:(s,s).
  17. run:().
  18. clauses
  19. run():-console::init(),stdio::write("Enter the name of cities"),console::nl,
  20. console::write("The first city: "),console::readln(First),console::nl,
  21. console::write("The second city: "),console::readln(Second),console::nl,
  22. start(First,Second),console::readchar(_).
  23. arca ("a","b",1).
  24. arca("a","c",1).
  25. arca("b","e",1).
  26. arca("b","d",1).
  27. arca("c","d",1).
  28. arca("c","g",1).
  29. arca("c","f",1).
  30. arca("d","e",1).
  31. arca("e","f",1).
  32. arca("f","x",1).
  33. start(Start,End):-db0(Start,End), db(Start,End), db_path(Start,End,MP,MD),
  34. console::write("Optimum way: "),console::write(MP),console::nl,
  35. console::write("Length of an optimum way="),console::write(MD),
  36. console::nl,console::nl.
  37. path(A,Z,Path,C):- path1(A,[Z],0,Path,C).
  38. path1(A,[A|Path1],C,[A|Path1],C).
  39. path1(A,[Y|Path1],C1,Path,C):- arca(X,Y,CXY), not(member(X,Path1)),C2=C1+CXY, path1(A,[X,Y|Path1],C2,Path,C).
  40. member(Head,[Head|_]).
  41. member(Head,[_|Tail]):- member(Head,Tail).
  42. db0(X,Y) :-path(X,Y,P,C), assert(db_path(X,Y,P,C)).
  43. db(X,Y):-db_path(X,Y,P,C), path(X,Y,MP,MC), MC<C,!,
  44. retract(db_path(X,Y,P,C)), assert(db_path(X,Y,MP,MC)), db(X,Y).
  45. db(_,_).
  46. end implement main
  47. goal
  48. console::runUtf8(main::run).
Как в 7 записать бд db_paths,s,list,i)? Правильно ли делается ввод через console::readln(First) и console::readchar(_)? Какие еще здесь ошибки?

Решение задачи: «Адаптировать метод поиска в глубину для VP7»

textual
Листинг программы
  1. run():-console::init(),
  2. ......................
  3.     start(First, Second),
  4.     _ = console::readLine(),
  5.     fail;
  6.     console::write("End of variants.."),
  7.     _ = console::readLine().

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


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

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

10   голосов , оценка 3.5 из 5

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

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

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