gpt4 book ai didi

lisp - 如何在列表中放置一个元素? (口齿不清)

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:10 25 4
gpt4 key购买 nike

(defun tictactoe3d ()
'(
((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 NIL NIL))
))

我需要一个函数来添加 X 或 O 来代替 NIL,我需要该函数来询问用户他想把它放在哪里。棋盘游戏是 tic tac toe 3D(3 个棋盘而不是 1 个,27 个位置而不是 9 个)。第一行是 1 级(它基本上与一个有 9 个位置的井字游戏相同)。如何将元素添加到这样的列表中。我知道我必须验证职位是否为零。

最佳答案

您返回的列表是一个常量。你不能改变常量,因为它有 undefined consequences .如果您想使用纯功能数据结构,您可以定义返回板的修改副本的操作。

你正在使用一个列表,而我认为你真的应该使用一个数组:毕竟,一个板实际上是一个固定大小的网格。以下是您如何分配它:

(make-array '(3 3 3) :initial-element nil)

=> #3A(((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 nil nil)))

然后,您使用 aref(setf aref):

(setf (aref board z y x) value)

关于lisp - 如何在列表中放置一个元素? (口齿不清),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com