【发布时间】:2015-08-08 06:58:20
【问题描述】:
我有一个数据结构:
*game-board*
#(#() #() #() #() #() #() #())
CL-USER> (test-move)
1
CL-USER> *game-board*
#(("O" "X" . #()) ("O" "X" . #()) ("X" "O" "O" "X" . #())
("X" "O" "X" "O" . #()) ("O" "X" . #()) ("X" . #()) ("X" "O" . #()))
CL-USER> (print-game-board)
("O" "X" . #())
("O" "X" . #())
("X" "O" "O" "X" . #())
("X" "O" "X" "O" . #())
("O" "X" . #())
("X" . #())
("X" "O" . #())
NIL
CL-USER>
我的问题是如何获得内部向量的尺寸?
(array-dimension game-board 0) 为外部向量的长度返回 7。我怎么不知道如何获得内部向量的尺寸。
我的代码填充板是这样的:(每次输入运行一次)
(defun move (c)
(let ((place (gethash c *col-lookup*)))
(cond ((oddp *turn-count*)
(push "X" (aref *game-board* place))
(incf *turn-count*))
((push "O" (aref *game-board* place))
(incf *turn-count*)))))
我使用向量是因为我认为我可以将移动推到棋盘上,当检查长度是否小于 4 时,然后跳过该行的水平检查。
在我找到解决方案之前,我是否正在考虑优化?这可能是不明智的,我可能应该按照建议使用二维数组来破解一些东西。
【问题讨论】:
-
只使用二维数组。你不需要在 Common Lisp 中使用向量的向量。
标签: arrays vector common-lisp