我无法解决如何在prolog中写出胸部“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).
但它似乎没有用,我错过了什么?
答案 0 :(得分:1)
试
location(S, L, P) :- memberchk((S,P), L).
然后你会得到
?- location(b, [(a,10), (b,6), (c,8), (d,14)], P).
P = 6.
答案 1 :(得分:1)
这是另一个,虽然CapelliC解决方案很好。
location(C, [(C,P)|_], P):-!.
location(C, [_|T], P) :- location(C, T, P).