<問題>
path(V,V).
path(V,U) :- link(V,W), path(W,U).

newLink :- read(X), oneLink(X).
oneLink(end_of_file) :- !.
oneLink(X) :- asserta(X), newLink.
add(F) :- asserta(link(dbmark,0)), see(F),
newLink, seen, see(user).

clear :- get_next, clear.
get_next :- retract(link(X,_)), !, X \== dbmark.

このプログラムを拡張して始点から終点までの経路を表示できるようにしなさい。

入力ファイルは以下

link(ac,gm).
link(gm,rq).
link(rq,lh).
link(lh,sh).
link(sh,lb).
link(lb,ad).
link(ad,ac).

実行例

| ?- add(map).
yes
| ?- path(ac,ad).
ac->gm->rq->lh->sh->lb->ad
yes