fork download
  1. :- set_prolog_flag(verbose,silent).
  2. :- prompt(_, '').
  3. :- use_module(library(readutil)).
  4.  
  5.  
  6. byCar(auckland,hamilton).
  7. byCar(hamilton,raglan).
  8. byCar(valmont,saarbruecken).
  9. byCar(valmont,metz).
  10.  
  11. byTrain(metz,frankfurt).
  12. byTrain(saarbruecken,frankfurt).
  13. byTrain(metz,paris).
  14. byTrain(saarbruecken,paris).
  15.  
  16. byPlane(frankfurt,bangkok).
  17. byPlane(frankfurt,singapore).
  18. byPlane(paris,losAngeles).
  19. byPlane(bangkok,auckland).
  20. byPlane(singapore,auckland).
  21. byPlane(losAngeles,auckland).
  22.  
  23. travel(X,Y) :- byCar(X,Y); byTrain(X,Y); byPlane(X,Y).
  24.  
  25.  
  26. travel(X,X,Visited,end) :- !.
  27. travel(X,Y,Visited,Path) :-
  28. \+ member(X, Visited),
  29. travel(X, New),
  30. travel(New, Y, [ X | Visited ], Path1),
  31. ( Path1 = end ->
  32. Path = go(X, New)
  33. ; Path = go(X, New, Path1) ).
  34.  
  35. travel(X,Y,Path) :-
  36. travel(X,Y,[],Path).
  37.  
  38. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  39.  
  40. main:-
  41. process,
  42.  
  43. process:-
  44. /* your code goes here */
  45. findall(X, travel(valmont,losAngeles,X), L),
  46. write(L),
  47.  
  48. :- main.
  49.  
  50. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  51.  
Success #stdin #stdout #stderr 0.03s 6160KB
stdin
Standard input is empty
stdout
[go(valmont, saarbruecken, go(saarbruecken, paris, go(paris, losAngeles))), go(valmont, metz, go(metz, paris, go(paris, losAngeles)))]
stderr
Warning: /home/k1vGsA/prog.pl:26:
	Singleton variables: [Visited]