测试数组是否为二维的代码是什么?对于一个维度,我知道反转列表会起作用。对于二维,我知道相反的行/列必须相同。换句话说,[1][2] 必须等于 [2][1] 等等。
(defun symmetry-check (list) (equal list (reverse list)))
最佳答案
这取决于您对对称性的定义。
在线性代数中,一个矩阵被称为对称矩阵,当它等于它的转置(这相当于说 M[i, j] = M[j, i] 对于所有 i 和 j)。因此,
(defun matrix-symmetric-p (m)
(equal m (transpose-matrix m)))
(defun transpose-matrix (m)
;; implement this
...)
不过,我强烈建议使用实际数组,因为这样可以更轻松、更高效地执行此类操作。
(defun matrix-symmetric-p (m)
(loop for i from 0 below (array-dimension m 0)
always
(loop for j from 0 below (array-dimension m 1)
always
(= (aref m i j) (aref m j i)))))
关于lisp - 对称二维阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9246963/