:- prompt(_, '').
:- use_module(library(readutil)).
byCar(auckland,hamilton).
byCar(hamilton,raglan).
byCar(valmont,saarbruecken).
byCar(valmont,metz).
byTrain(metz,frankfurt).
byTrain(saarbruecken,frankfurt).
byTrain(metz,paris).
byTrain(saarbruecken,paris).
byPlane(frankfurt,bangkok).
byPlane(frankfurt,singapore).
byPlane(paris,losAngeles).
byPlane(bangkok,auckland).
byPlane(singapore,auckland).
byPlane(losAngeles,auckland).
travel(X,Y) :- byCar(X,Y); byTrain(X,Y); byPlane(X,Y).
travel(X,X,Visited,end) :- !.
travel(X,Y,Visited,Path) :-
\+ member(X, Visited),
travel(X, New),
travel(New, Y, [ X | Visited ], Path1),
( Path1 = end ->
Path = go(X, New)
; Path = go(X, New, Path1) ).
travel(X,Y,Path) :-
travel(X,Y,[],Path).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
main:-
process,
process:-
/* your code goes here */
findall(X
, travel
(valmont
,losAngeles
,X
), L
),
:- main.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Oi0gc2V0X3Byb2xvZ19mbGFnKHZlcmJvc2Usc2lsZW50KS4KOi0gcHJvbXB0KF8sICcnKS4KOi0gdXNlX21vZHVsZShsaWJyYXJ5KHJlYWR1dGlsKSkuCgoKICAgICBieUNhcihhdWNrbGFuZCxoYW1pbHRvbikuICAKICAgICAgIGJ5Q2FyKGhhbWlsdG9uLHJhZ2xhbikuICAKICAgICAgIGJ5Q2FyKHZhbG1vbnQsc2FhcmJydWVja2VuKS4gIAogICAgICAgYnlDYXIodmFsbW9udCxtZXR6KS4gIAogICAgICAgICAKICAgICAgIGJ5VHJhaW4obWV0eixmcmFua2Z1cnQpLiAgCiAgICAgICBieVRyYWluKHNhYXJicnVlY2tlbixmcmFua2Z1cnQpLiAgCiAgICAgICBieVRyYWluKG1ldHoscGFyaXMpLiAgCiAgICAgICBieVRyYWluKHNhYXJicnVlY2tlbixwYXJpcykuICAKICAgICAgICAgCiAgICAgICBieVBsYW5lKGZyYW5rZnVydCxiYW5na29rKS4gIAogICAgICAgYnlQbGFuZShmcmFua2Z1cnQsc2luZ2Fwb3JlKS4gIAogICAgICAgYnlQbGFuZShwYXJpcyxsb3NBbmdlbGVzKS4gIAogICAgICAgYnlQbGFuZShiYW5na29rLGF1Y2tsYW5kKS4gIAogICAgICAgYnlQbGFuZShzaW5nYXBvcmUsYXVja2xhbmQpLiAgCiAgICAgICBieVBsYW5lKGxvc0FuZ2VsZXMsYXVja2xhbmQpLiAKICAgICAgIAp0cmF2ZWwoWCxZKSA6LSBieUNhcihYLFkpOyBieVRyYWluKFgsWSk7IGJ5UGxhbmUoWCxZKS4KCiAgCnRyYXZlbChYLFgsVmlzaXRlZCxlbmQpIDotICEuCnRyYXZlbChYLFksVmlzaXRlZCxQYXRoKSA6LQogIFwrIG1lbWJlcihYLCBWaXNpdGVkKSwKICB0cmF2ZWwoWCwgTmV3KSwKICB0cmF2ZWwoTmV3LCBZLCBbIFggfCBWaXNpdGVkIF0sIFBhdGgxKSwKICAoIFBhdGgxID0gZW5kIC0+CiAgICBQYXRoID0gZ28oWCwgTmV3KQogIDsgUGF0aCA9IGdvKFgsIE5ldywgUGF0aDEpICkuCiAgCnRyYXZlbChYLFksUGF0aCkgOi0KICB0cmF2ZWwoWCxZLFtdLFBhdGgpLgogIAolJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlCgptYWluOi0KCXByb2Nlc3MsCgloYWx0LgoKcHJvY2VzczotCgkvKiB5b3VyIGNvZGUgZ29lcyBoZXJlICovCglmaW5kYWxsKFgsIHRyYXZlbCh2YWxtb250LGxvc0FuZ2VsZXMsWCksIEwpLAoJd3JpdGUoTCksCgl0cnVlLgoKOi0gbWFpbi4KCiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUK