gpt4 book ai didi

Lisp 随机化并使用两个函数将列表拉入另一个

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

好的,所以我是 lisp 的新手,我已经在这个程序上工作了几天,以了解 lisp 并研究 lisp 的某些部分,例如 cons、cdr、let、funcall 和其他一些部分。我正在尝试创建一个随机分配颜色的糖果机。我已经多次运行这段代码,起初我花了一段时间才停止收到随机函数的错误,现在它说我在 generate-candy-supply 中的缺点参数太少了。有人对去哪里有任何建议吗?对此有任何解决方案吗?

到目前为止我的代码是...

(defvar candy-color '(yellow red blue green pink orange))

(defun generate-candy-supply (size)
(if (= 0 size)
(cons (nth (random (length candy-color)) candy-color))
(generate-candy-supply (- size 1))))

(defun candy-machine (supply-of-candy)
(function
(lambda ()
(prog1
(car supply-of-candy)
(setq supply-of-candy
(cdr supply-of-candy))))))

(defvar *gummy-bear*
(candy-machine (generate-candy-supply 4)))

(defvar *easter-egg*
(candy-machine (generate-candy-supply 6)))

(defun get-candy (machine)
(funcall machine))

我的任务是..

CANDY程序的原型(prototype)是

(defun get-candy (machine)
(funcall machine))

在下面的示例中,我们定义了两个CANDY-MACHINE,一个是gummy-bear有 4 个糖果的机器,另一个是有 6 个糖果的彩蛋机。这示例代码如下所示:

(defvar *gummy-bear*
(candy-machine (generate-candy-supply 4)))
(defvar *easter-egg*
(candy-machine (generate-candy-supply 6)))

该程序的示例运行如下所示:

[1]> (load 'candy.lisp)
;; Loading file candy.lisp ...
;; Loaded file candy.lisp
T
[2]> (get-candy *gummy-bear*)
BLUE
[3]> (get-candy *gummy-bear*)
BROWN
[4]> (get-candy *gummy-bear*)
YELLOW
[5]> (get-candy *gummy-bear*)
YELLOW
[6]> (get-candy *gummy-bear*)
NIL
[7]> (get-candy *easter-egg*)
BLUE
[8]> (get-candy *easter-egg*)
BROWN
[9]> (get-candy *easter-egg*)
GREEN
[10]> (get-candy *easter-egg*)
BROWN
[11]> (get-candy *easter-egg*)
YELLOW
[12]> (get-candy *easter-egg*)
BLUE
[13]> (get-candy *easter-egg*)
NIL

如果您能帮助我,我将不胜感激。我不是在寻找完整的答案,但如果您能指出正确的方向,那将很有帮助。如果代码中也有错误,您能否指出这些错误。

最佳答案

是的,您在此处对 cons 的调用中几乎没有参数:

(defun generate-candy-supply (size)
(if ( = 0 size)
(cons (nth( random (length candy-color)) candy-color))
;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <= HERE
(generate-candy-supply ( - size 1))))

cons需要两个参数,而你只给它一个。那么你用什么来修饰你的颜色?

还要正确缩进代码,现在真的很难阅读了。

关于Lisp 随机化并使用两个函数将列表拉入另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27098434/

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