0

胸の「C」が場所「L」にあることをプロローグに書き込む方法を見つけるのに苦労していますこれは私が現在持っているコードですが、複雑すぎて間違った方向に進んでいると思います

    location(C, L).

    location(C, [[C,L]|_]).
    location(C, [_|T]) :-
            location(C, T, L).

誰かがこれを解決するために正しい方向に私を助けたり、指摘したりできますか.

それを確認するには、次のコードを使用します。

    location(b, [(a,10), (b,6), (c,8), (d,14)]).

私は今それを変更しました:

    location(C, L, P). 
    location(C, L, P) :- memberchk((C,P), L).

    location(b, [(a,10), (b,6), (c,8), (d,14)], P).

しかし、うまくいかないようです。

4

2 に答える 2

1

試す

location(S, L, P) :- memberchk((S,P), L).

それからあなたは得るでしょう

?- location(b, [(a,10), (b,6), (c,8), (d,14)], P).
P = 6.
于 2012-11-27T19:18:38.873 に答える
1

これは別のものですが、CapelliC ソリューションは問題ありません。

location(C, [(C,P)|_], P):-!.
location(C, [_|T], P) :- location(C, T, P).
于 2012-11-27T19:20:43.867 に答える