我按照简单 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 ...
条件,注意这个结构有点不寻常,例如参见文档。请注意第一个参数无论如何都会被“读取”。如果必须保持不变,最好添加另一个 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,
....
高温高压