I am completely new to Prolog, but I have to do this for a homework. At the entry is given a undirected coherent graph. Write a program in Prolog, which prints euler circle of this graph. Thanks for answers. For example i have this edge:
edge(a,b).
edge(b,e).
edge(a,c).
edge(c,d).
edge(e,d).
This is an Eulerian path ; not necessarily a circle.
eulerpath(E, Cs) :-
setof(A-B, call(E, A,B), ABs),
edges_path(ABs, Cs).
edges_path([], [_]).
edges_path(ABs0, [X,Y|Xs]) :-
select(A-B,ABs0,ABs),
( A = X, B = Y ; B = X, A = Y ),
edges_path(ABs, [Y|Xs]).
?- eulerpath(edge, Cs).
Cs = [a,b,e,d,c,a]
; Cs = [b,a,c,d,e,b]
; Cs = [a,c,d,e,b,a]
; Cs = [c,a,b,e,d,c]
; Cs = [b,e,d,c,a,b]
; Cs = [e,b,a,c,d,e]
; Cs = [c,d,e,b,a,c]
; Cs = [d,c,a,b,e,d]
; Cs = [e,d,c,a,b,e]
; Cs = [d,e,b,a,c,d]
; false.