2012-11-26 3 views
1

로커와 코드를 연결하려고합니다. 이것은 내가 지금까지 가지고있는 것이다.Win Prolog List 부분적으로 작동합니다.

lockerof(C, [], V). 
    lockerof(C,[C|_], V). 
    lockerof(C, [[C, V]|_], V). 

는 난에 입력 할 때 :

lockerof(a, [[a,1],[b,2]], V). 

그것은 나에게 가치를 제공합니다 그래서 난이 얻을 :

V = 1 

을하지만 난에 입력 할 때 :

lockerof(b, [[a,1],[b,2]], V). 

나는 '아니오'를 얻지 만 산출물을 원한다 :

V =2 

무엇이 잘못되었으며 어떻게이 문제를 해결합니까?

답변

0

목록의 꼬리도 스캔해야합니다. 사용 재귀 :

lockerof(C, [_|T], V) :- lockerof(C, T, V). 

입니다 "[C가, V] 목록의 꼬리에있는 경우, 다음 목록 자체도".

또한 처음 두 규칙이 필요하다고 생각하지 않습니다.

lockerof(C, L, V) :- member([C,V], L). 
:

마지막으로, 당신은 한 회원/2 술어 한 줄에 구현할 수

관련 문제