我將輸入N作爲lisp中二維矩陣的行數,其中每行最多可以包含5個元素。所以我這樣做。現在eachrow,因爲它可以具有任何數量之間0至5的元素所以,我提出一個sepearte數組來存儲2D矩陣的每一行的大小,並增加它每當我在它在lisp中打印第i行第j列值
(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)))
現在我想打印表示第i這個myMatrix的像這樣的一行:
Item 1 : myMatrix[i][0]
Item 2 : myMatrix[i][1]..and so on
在直接的方式,我想第j值第i行。我們如何才能在lisp中得到這個?
首先,如果在一個行元素的數量可以是不同的行不同,它不是一個矩陣。您可能需要可擴展向量或列表向量(5不是那麼大的數字,因此您可以使用列表,實際上它可以比基於向量的方法更快)。 – Mark