因此,我使用Lisp制作了一个相对简单的游戏。将项目放置在2D矩阵列中的第一个零元素
我创建了一个董事会指定大小的所有元素NIL:
(defun make-board(rows columns)
(cond ((= rows 1) (list (make-list columns)))
(t (append (list (make-list columns)) (make-board (1- rows) columns)))))
现在我工作的地方的功能,将在二维表的列的第一个nil元素放置一个值:
(defun place(player column matrix)
;need some help here
;I can get the specified column, is there a better way?!
(let (col)(get-column column matrix))
)
我可以检索指定列:
; return the given column
(defun get-column
(colnum matrix)
(mapcar (lambda (row) (nth colnum row)) matrix))
我喜欢这种感觉是S但不幸的是,Lisp对我来说工作不好。我也喜欢这个没有迭代的实现,因为这是做Lisp的“正确”方式。
编辑:
为了澄清,使板将返回类似如下:
(make-board 5 5)
((NIL NIL NIL NIL NIL)
(NIL NIL NIL NIL NIL)
(NIL NIL NIL NIL NIL)
(NIL NIL NIL NIL NIL)
(NIL NIL NIL NIL NIL))
为什么标记为'Emacs'? Emacs Lisp中的代码是? –