私の複数のソリューションの問題は、Prolog のバックトラッキングがゴールをループするために発生します。技術的には、提供された各ソリューションが正しいことは理解していますが、私にとっては役に立ちません。重複を削除する方法はありますか?
これまでの私のコードは次のとおりです。
flight(london, paris).
flight(paris, amsterdam).
flight(amsterdam, rome).
flight(rome, paris).
flight(rome, rio_de_janeiro).
route_from(A,B) :-
flight(A,B).
route_from(A,B) :-
flight(A,R),
route_from(R,B).
クエリの例は次のとおりです。
?- route_from(A, paris).
A = london ;
A = rome ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
A = london ;
etc.
よろしく。