【发布时间】:2015-06-03 16:42:31
【问题描述】:
我将输入 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 中得到这个?
【问题讨论】:
-
首先,如果一行中的元素数量对于不同的行可以不同,那么它不是矩阵。您可能需要可扩展向量或列表的向量(5 并不是那么大的数字,因此您可以自己使用列表,实际上它甚至比基于向量的方法更快)。
标签: arrays multidimensional-array lisp clisp