안녕하세요, 저는 간단한 문제가있어서 저는 프롤로그와 함께 매우 새롭다고 경고합니다. 동일한 크기의 세 개의 목록이 있다고 가정합니다. 각 목록에는 1, 0 또는 -1 만 들어 있습니다. 나는 모든 i에 대해 세 목록 중 i 번째 요소 중 하나만이 0이 아닌지 확인하고자합니다.Prolog : iteration
이 코드는 그것을 수행하는 고정 I :
:- use_module(library(clpfd)).
compat1(V1,V2,V3,I) :-
length(V1,G),
nth1(I,V1,X),
nth1(I,V2,Y),
nth1(I,V3,Z),
W is X*X+Y*Y+Z*Z,
W is 1,
I in 1..G.
어떻게 "I, compat1 (V1, V2, V3, I) ALL은"알 수 있습니까? . 나는 내가 에 관심이 있어요하지만 compat2 작동하지 않습니다 = 최대 값 K으로 호출 할 수 있도록
compat2(V1,V2,V3,1) :- compat1(V1,V2,V3,1).
compat2(V1,V2,V3,K) :- compat2(V1,V2,V3,J), compat1(V1,V2,V3,K), K is J+1.
을 정의하려고 : 제공 true로, 이후 ";" 무기한으로 실행됩니다.
감사합니다.
우아하고 간단합니다. 매우 유용하고, 사용하지 말라고 말해줘서 고마워/2입니다. – Martino
또 다른 질문입니다. 색인과 관련된 목록의 총계는 어떻게됩니까? 예를 들어, 내가 I * A (I)라는 표현을 어떻게 요약 할 수 있습니까? – Martino
이 작업을 일반적으로 수행 할 합의가 없습니다. 따라서 가장 좋은 방법은 재귀 적으로 그것을 보행자 방식으로 작성하는 것입니다. – false