해당 목록에서 값을 비교 및 검색하려고합니다. 내 술어 나는 다음과 같은 동작을 기대 correspond_elements(V1, Xs, V2, Ys)
입니다 :목록 및 요소 비교
V1
이 첫 번째 목록
Xs
에 체크하고,
Ys
에서 해당 값을 반환하는
V2
에 주어진
?- correspond_elements(a, [a,b,b,a], X, [1,2,3,4]).
X = 1;
X = 4.
. 첫 번째 값을 가져옵니다
% checks if the argument is a list
is_list([]).
is_list([_|T]) :-
is_list(T).
% predicate
correspond_elements(V1, [X|Xs], V2, [Y|Ys]) :-
is_list([X|Xs]),
is_list([Y|Ys]),
(V1 == X ->
V2 is Y
;
correspond_elements(V1, Xs, V2, Ys)
).
: 지금까지 내가 이것을 가지고
?- correspond_elements(a, [a,b,b,a], X, [1,2,3,4]).
X = 1.
나는 ->
절은 참이되면, ;
후 다음 아무것도 실행되지 않았 음을 알 수 있습니다. 내 코드는 X
에 대해 발견 된 첫 번째 답변 만 받고 멈추는 것이 분명하지만 처음 답변을 찾은 후에도 목록을 반복 재생하고 X
에 대한 모든 가능한 답변을 반환하는 방법을 알지 못합니다.
감사합니다, 난 그냥 프롤로그 사고로 어려움을 겪고 있다고 생각. 이것은 많이 지 웁니다, 감사합니다 :). – RoadRunner