% % rGraph(a,[[a,b],[b,c],[c,d],[e,f],[d,f],[e,a]],R). % %[[brussels, vienna], [vienna, sarajevo], [sarajevo, tirana], [tirana, sofia], [sofia, minsk], [minsk, andorra], [andorra, brussels]] % rGraph(brussels,[[vienna, sarajevo], [sarajevo, tirana], % [tirana,sofia], [sofia, minsk], [andorra, % brussels],[brussels,minsk],[vienna,andorra]],R). rGraph(Orig,[(Orig,Z)|R],R2):-!, reorderGraph([(Orig,Z)|R],R2). rGraph(Orig,R,R3):- member([Orig,X],R),!, delete(R,[Orig,X],R2), reorderGraph([[Orig,X]|R2],R3). rGraph(Orig,R,R3):- member([X,Orig],R), delete(R,[X,Orig],R2), reorderGraph([[Orig,X]|R2],R3). reorderGraph([],[]). reorderGraph([[X,Y],[Y,Z]|R],[[X,Y]|R1]):- reorderGraph([[Y,Z]|R],R1). reorderGraph([[X,Y],[Z,W]|R],[[X,Y]|R2]):- Y\=Z, reorderGraph2(Y,[[Z,W]|R],R2). reorderGraph2(_,[],[]). reorderGraph2(Y,R1,[[Y,Z]|R2]):- member([Y,Z],R1),!, delete(R1,[Y,Z],R11), reorderGraph2(Z,R11,R2). reorderGraph2(Y,R1,[[Y,Z]|R2]):- member([Z,Y],R1), delete(R1,[Z,Y],R11), reorderGraph2(Z,R11,R2). printLL([]). printLL([H|T]):- printLL(T), write(H),nl.