在lisp中打印第i行第j列值

时间:2015-06-03 16:42:31

标签: arrays multidimensional-array lisp clisp

我将输入N作为lisp中2D矩阵的行数,其中每行最多可包含5个元素。所以我这样做。现在为每一行,因为它可以有0到5之间的任意数量的元素。所以我创建了一个sepearte数组来存储每行2D矩阵的大小,并在我推动其中的任何元素时递增它

 var table = document.getElementById("mytab1");
    var textbox=document.getElementById("textbox")
    for (var i = 0, row; row = table.rows[i]; i++) {
       for (var j = 0, col; col = row.cells[j]; j++) {
         if(textbox.value=="")
            {
               textbox.value=row.cells[j].innerText;
            }
         else
            {
               textbox.value+= textbox.value+','+row.cells[j].innerText;
             }
       }  
    }

现在当我需要向任何行添加元素时,我接受输入,而行具有最大元素,或者用户自己退出以输入该行中的任何其他元素。要向第i行添加元素,我会执行以下操作:

(setq myMatrix (make-array (list N 5)))

(setq sizeArray (make-list N:initial-element 0))

现在我想要打印这个myMatrix的第一行像这样:

(setf (aref myMatrix i (nth i sizeArray)) "Hi")
// Hi is just for example here
(setf (nth i sizeArray) (+ 1 (nth i sizeArray))) 

直接地,我想要第i行的第j个值。我们如何在lisp中获得这个?

1 个答案:

答案 0 :(得分:1)

因为你正在使用一系列列表如何:

(defun element-of-matrix (matrix i j)
  (nth j (aref matrix i)))