定义一个判定矩阵(正方形)是否关于主对角线对称的谓词。谓词将读取,其中 Z 是关于主对角线对称的矩阵(正方形)
对称 (Z)
这个想法是检查行和列是否相等,但不知道如何开始提高练习......
定义一个判定矩阵(正方形)是否关于主对角线对称的谓词。谓词将读取,其中 Z 是关于主对角线对称的矩阵(正方形)
对称 (Z)
这个想法是检查行和列是否相等,但不知道如何开始提高练习......
symmetrical(Z) :-
transpose(Z,Z).
Now, you only need to define transpose!
好的旧矩阵 I,J 索引:
symmetrical(M) :-
forall(elem(M, I, J, E), elem(M, J, I, E)).
elem(M, I, J, E) :-
nth1(I, M, R),
nth1(J, R, E).
测试:
?- symmetrical([[a,b],[b,a]]).
true.
?- symmetrical([[a,b],[a,b]]).
false.
请注意,我在看到@gusbro 评论之前写了这篇文章,但这正是他所建议的......