我将输入N作为lisp中二维矩阵的行数,其中每行最多可以有5个元素。所以我把它做成这样。现在对于每一行,因为它可以有0到5之间任意数量的元素。因此,我创建了一个单独的数组来存储二维矩阵中每一行的大小并在我将任何元素放入其中时对其进行递增
(setq myMatrix (make-array (list N 5)))
(setq sizeArray (make-list N:initial-element 0))
现在,当我需要向任何一行添加元素时,我在该行拥有最大元素或用户自己退出时输入该行中的任何元素。要向第一行添加一个元素,我可以这样做:
(setf (aref myMatrix i (nth i sizeArray)) "Hi")
// Hi is just for example here
(setf (nth i sizeArray) (+ 1 (nth i sizeArray)))
现在我想打印这个myMatrix的第一行,像这样:
Item 1 : myMatrix[i][0]
Item 2 : myMatrix[i][1]..and so on
直接来说,我想要第I行的第j个值。
因为您使用的是列表数组,那么:
(defun element-of-matrix (matrix i j)
(nth j (aref matrix i)))