だから私は Lisp を使って比較的単純なゲームを作っています。
すべての NIL 要素を指定したサイズのボードを作成します。
(defun make-board(rows columns)
(cond ((= rows 1) (list (make-list columns)))
(t ( append (list (make-list columns)) (make-board (1- rows) columns)))))
現在、2D リストの列の最初の 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))
これは簡単なことのように感じますが、残念ながら Lisp はうまく機能しません。それが Lisp を行う「適切な」方法だからです。
編集:
明確にするために、make-board は次のようなものを返します。
(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))