Skip to content

Instantly share code, notes, and snippets.

@albertusdev
Created April 10, 2019 02:39
Show Gist options
  • Save albertusdev/c742e8294931d2fd8395917a77980f9b to your computer and use it in GitHub Desktop.
Save albertusdev/c742e8294931d2fd8395917a77980f9b to your computer and use it in GitHub Desktop.
directTrain(saarbruecken,dudweiler).
directTrain(forbach,saarbruecken).
directTrain(freyming,forbach).
directTrain(stAvold,freyming).
directTrain(fahlquemont,stAvold).
directTrain(metz,fahlquemont).
directTrain(nancy,metz).
direct(X, Y) :- directTrain(X, Y).
direct(X, Y) :- directTrain(Y, X).
travelFromTo(S, D) :- travelFromTo(S, D, [S]).
travelFromTo(S, D, _) :- direct(S, D).
travelFromTo(S, D, Visited) :- direct(S, X), \+ member(X, Visited), travelFromTo(X, D, [X|Visited]).
route(S, D, R) :- route(S, D, R, [S]).
route(S, D, [], _) :- \+ travelFromTo(S, D), !.
route(S, D, [S, D], _) :- direct(S, D), !.
route(S, D, [S, X|Route], Visited) :- direct(S, X), \+ member(X, Visited), travelFromTo(X, D), route(X, D, [X|Route], [X|Visited]).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment