2013-04-14 2 views
0

나는 마지막 시험을 위해 프롤로그를 공부하고 있는데, 나는이 과제에 대해 내가 일찍부터 잘못했는지 알 수 없다.왜이 프롤로그 코드는 하나의 결과 만 반환합니까?

이것은 정확히 '숙제'문제가 아니며, '최종 질문을 위해 공부하고 있습니다.'누군가 올바른 답을 줄 수 있다면 큰 도움이 될 것입니다.

%% b) Write a predicate after(X, List, Result) that returns everything 
%% in a list after any occurrence of the given element X. 
%% ?- after(a,[b,a,x,d,a,f,g],R). 
%% R = [x,d,a,f,g]; 
%% R = [f,g]; 
%% no 

내 솔루션이를했지만 그것은 단지,하지 내가 뭐하는 거지 두

after(X,[_,X|R],R). 

?- after(a,[b,a,x,d,a,f,g],R). 
R = [x, d, a, f, g]. 

잘못

+0

'after (a, [a, b, c], R).'와 같은 두 번째 위치가 아닌 요소는 코드가 작동하지 않습니다. 일반적인 방법으로 문제를 해결하는 방법에 대해 생각해 보면 원하는 결과를 여러 번 얻을 수 있습니다. – icktoofay

답변

3
R에 대해 하나 개의 값을 반환합니다 : :(

질문이었다.?

시간이 걸리고 여기에 게시하자마자 알아 냈습니다.

그냥 내 솔루션입니다. :

after(X,[X|R],R). 
after(X,[_|Z],R) :- 
    after(X,Z,R). 
관련 문제