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 回答