나는 간단한 프롤로그 프로그램에서 일반적으로 필요한 인수를 지시했습니다. 사양이 없으면 코드에 대해 추측 할 수 있습니다. M과 나머지를 바꿨습니다.
calculateSum(_, _List, _Row, 5, []).
calculateSum([M|Rest], List, Row, Col, Result):-
Col < 5,
( Col \= Row
-> calcHeu(M, L),
sum(L, S),
index(List, Row, Col, V),
Y is V + S,
Result = [Y|Tail]
; Result = Tail
),
Row1 is Row + 1,
Col1 is Col + 1,
calculateSum(Rest, List, Row1, Col1, Tail).
편집이 ... 첫 번째 인수의 의미를 확인, if Col \= Row ... else ...
조건을 추가이가 조금 특이한의 구성 조심, 예를 here 문서를 참조하십시오. 첫 번째 인수는 어쨌든 '읽음'을 얻습니다. 그 변화가 통과해야하는 경우, 그것은 또 다른 calculateSum/5 추가하는 것이 좋습니다 :
calculateSum(_, _List, _Row, 5, []).
calculateSum(Input, List, Num, Num, Result):-
Row is Num + 1,
Col is Num,
calculateSum(Input, List, Row, Col, Result).
calculateSum([M|Rest], List, Row, Col, Result):-
Col < 5,
....
HTH를
COL = 행이 단계를 건너 뛸 경우 내가 원하는 경우 어떻게해야합니까? – Waqas
행을 증가시키지 않습니다. 행을 변경해야합니까 Num + 1입니다. 만약 내가 그것을 cahange 스택 오버플로를 제공합니다 Logged – Waqas