我想总结矩阵中的每一行和列,并检查它们是否全部相同。 我想使用行和转置方法的总和来做,但我不知道如何检查每行和列的总和是否相同。
请给我一些算法指导? 谢谢你提前。
答案 0 :(得分:1)
计算总和时,请始终使用相同的变量 此示例显示了如何为行完成。
checkRowSums([], _).
checkRowSums([Row|R], Sum) :- rowSum(Row, Sum), checkRowSums(R, Sum).
?- checkRowSums([[1, 5], [2, 4], [1, 2, 3]], _).
答案 1 :(得分:0)
要检查列中的行,可以使用谓词sum_list:
sum_list([], 0).
sum_list([H|T], Sum) :-
sum_list(T, Rest),
Sum is H + Rest.
然后使用sum_list查找行的总和,如下所示:
sum_rows([],[]).
sum_rows([Head|Tail], [Ret|Return]) :-
sum_list(Head, Ret),
sum_rows(Tail, Return).
这将返回行总和的列表。