fork download
  1. :- set_prolog_flag(verbose,silent).
  2. :- prompt(_, '').
  3. :- use_module(library(readutil)).
  4.  
  5. main:-
  6. process,
  7.  
  8. viagem(roma,lisboa,aviao,'12:00','15:00',300).
  9. viagem(lisboa,porto,comboio,'16:00','18:00',10).
  10.  
  11. viajar(A, B, _, [viagem(A, B, C, D, E, F)]) :-
  12. viagem(A, B, C, D, E, F), % Se existe uma viagem direta de A a B
  13. !. % Não precisa procurar mais
  14.  
  15. viajar(A, B, JaVisitou, [viagem(A, X, C, D, E, F)|Lista]) :-
  16. viagem(A, X, C, D, E, F), % Escolhe um destino qualquer
  17. \+ member(X, JaVisitou), % Que você ainda não visitou
  18. viajar(X, B, [X|JaVisitou], Lista). % E tente ir dele até B
  19.  
  20. process:-
  21. viajar(roma, porto, [roma], Lista),
  22. write(Lista), nl,
  23.  
  24. :- main.
Success #stdin #stdout 0.04s 6160KB
stdin
Standard input is empty
stdout
[viagem(roma, lisboa, aviao, 12:00, 15:00, 300), viagem(lisboa, porto, comboio, 16:00, 18:00, 10)]