私は、単純なPrologプログラムでは通常必要とされる引数を指示しました。 仕様がなければ、私はあなたのコードを推測することができます。私はMとRestを交換しました。
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
私は行をインクリメントしていません。私はRowをNum + 1に変更する必要がありますか? – Waqas