Prolog - 任何每行和每列的总和

时间:2010-12-05 04:37:49

标签: matrix prolog

我想总结矩阵中的每一行和列,并检查它们是否全部相同。 我想使用行和转置方法的总和来做,但我不知道如何检查每行和列的总和是否相同。

请给我一些算法指导? 谢谢你提前。

2 个答案:

答案 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).

这将返回行总和的列表。