% -----------------------------------------
% Exercice 5
% @author "Alexis Fouché" <contact@alexisfouche.net>
% -----------------------------------------

% == Question 1

arc(bachant, aulnoye).
arc(eclaibes, aulnoye).
arc(eclaibes, bachant).
arc(eclaibes, friche).
arc(bachant, friche).
arc(friche, gommegnies).
arc(bachant, croix).
arc(bachant, denain).
arc(croix, denain).
arc(denain, gommegnies).

% == Question 2

chemin(A, A, Liste) :- Liste = [A].

chemin(A, B, Liste) :- arc(A, C),
                       chemin(C, B, LP),
                       Liste = [A|LP].


% == Question 3

arc(bachant, aulnoye, 8).
arc(eclaibes, aulnoye, 4).
arc(eclaibes, bachant, 7).
arc(eclaibes, friche, 5).
arc(bachant, friche, 4).
arc(friche, gommegnies, 6).
arc(bachant, croix, 3).
arc(bachant, denain, 6).
arc(croix, denain, 7).
arc(denain, gommegnies, 5).


% == Question 4
chemin(A, A, Liste, Cout) :- Liste = [A], Cout = 0.

chemin(A, B, Liste, Cout) :- arc(A, C, Cout1),
                             chemin(C, B, LP, Cout2),
                             Liste = [A|LP],
                             Cout is Cout1 + Cout2.


% == Question 6
voisin(A, B) :- arc(A, B).
voisin(A, B) :- arc(B, A).
