私は現在鉄道プログラムを書いていますが、事実に基づくリストを使用するのに少し問題があります。私は Prolog を初めて使用し、これまでに次の事実とルールを書きました。
location(euston, [northernLine]).
location(warrenStreet, [victoriaLine, northernLine]).
location(warwickAvenue, [bakerlooLine]).
location(paddington, [bakerlooLine]).
hasCommonLine(Location1, Location2, Line) :-
location(Location1, Line),
location(Location2, Line).
アイデアは、ルールが 2 つの場所に共通する行の名前を返すことです。これは試してみるとhasCommonLine(warwickAvenue,paddington,Line).
うまくいきますが、試してみると false を返しますhasCommonLine(euston,warrenStreet,Line).
。
これは、ルールがリストの最初の要素のみをチェックするためであると思われます。したがって、リスト内のすべての要素をチェックするのではなく、比較のみ[northernLine]
を[victoriaLine]
行います。これを達成するためのガイダンスは大歓迎です!