ALGAV - Ficha 7
13/11/11 18:01 Filed in: ALGAV
Hipótese de resolução da alínea 1 da Ficha 7
go(Origem,Percurso):-
findall([A,B], estrada(A,B), LL), une(LL, LN),
go1(Origem,Origem,LN,Percurso).
go1(O,X,[O],[X,O]):-
estrada(X,O);estrada(O,X).
go1(O,Ultimo,LN,[Ultimo|Perc]):-
remove(X,LN,LN1),
(estrada(Ultimo,X); estrada(X,Ult)),
go1(O,X,LN1,Perc).
união([],L,L).
união([X|L],L1,L2):-member(X,L1),!,união(L,L1,L2).
união([X|L],L1,[X|L2]):-união(L,L1,L2).
une([LH|LT],LU):-une(LT,LU1),união(LH,LU1,LU).
une([],[]).
go(Origem,Percurso):-
findall([A,B], estrada(A,B), LL), une(LL, LN),
go1(Origem,Origem,LN,Percurso).
go1(O,X,[O],[X,O]):-
estrada(X,O);estrada(O,X).
go1(O,Ultimo,LN,[Ultimo|Perc]):-
remove(X,LN,LN1),
(estrada(Ultimo,X); estrada(X,Ult)),
go1(O,X,LN1,Perc).
união([],L,L).
união([X|L],L1,L2):-member(X,L1),!,união(L,L1,L2).
união([X|L],L1,[X|L2]):-união(L,L1,L2).
une([LH|LT],LU):-une(LT,LU1),união(LH,LU1,LU).
une([],[]).