在lisp中打印第i行第j列值
Printing ith row jth column value in lisp
我将输入 N 作为 lisp 中二维矩阵的行数,其中每行最多可以包含 5 个元素。所以我这样做了。现在对于每一行,因为它可以有 0 到 5 之间的任意数量的元素。所以我制作了一个单独的数组来存储 2D 矩阵每一行的大小,并在我将任何元素推入其中时递增它
(setq myMatrix (make-array (list N 5)))
(setq sizeArray (make-list N:initial-element 0))
现在,当我需要向任何行添加元素时,我会在该行具有最大元素或用户自己退出以在该行中输入更多元素时进行输入。要向第 i 行添加一个元素,我会这样做:
(setf (aref myMatrix i (nth i sizeArray)) "Hi")
// Hi is just for example here
(setf (nth i sizeArray) (+ 1 (nth i sizeArray)))
现在我想像这样打印 myMatrix 的第 i 行:
Item 1 : myMatrix[i][0]
Item 2 : myMatrix[i][1]..and so on
以直接方式,我想要第 i 行的第 j 个值。我们如何在 lisp 中得到这个?
因为您使用的是列表数组,如何:
(defun element-of-matrix (matrix i j)
(nth j (aref matrix i)))
我将输入 N 作为 lisp 中二维矩阵的行数,其中每行最多可以包含 5 个元素。所以我这样做了。现在对于每一行,因为它可以有 0 到 5 之间的任意数量的元素。所以我制作了一个单独的数组来存储 2D 矩阵每一行的大小,并在我将任何元素推入其中时递增它
(setq myMatrix (make-array (list N 5)))
(setq sizeArray (make-list N:initial-element 0))
现在,当我需要向任何行添加元素时,我会在该行具有最大元素或用户自己退出以在该行中输入更多元素时进行输入。要向第 i 行添加一个元素,我会这样做:
(setf (aref myMatrix i (nth i sizeArray)) "Hi")
// Hi is just for example here
(setf (nth i sizeArray) (+ 1 (nth i sizeArray)))
现在我想像这样打印 myMatrix 的第 i 行:
Item 1 : myMatrix[i][0]
Item 2 : myMatrix[i][1]..and so on
以直接方式,我想要第 i 行的第 j 个值。我们如何在 lisp 中得到这个?
因为您使用的是列表数组,如何:
(defun element-of-matrix (matrix i j)
(nth j (aref matrix i)))