gpt4 book ai didi

lisp - UVa 10120 礼物?!在普通 Lisp 中?

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

我正在学习 common lisp 我在 uVA 数据库 (http://acm.uva.es/p/v101/10120.html) 和广度搜索功能(接受一个起点,目标点和一个合法的移动生成器),我已经了解了我打算如何得到答案的理论,但 Lisp 只是不同意我的看法。我可以就如何从这一点开始进行一些建议吗?下面是给定问题的链接以及我尝试使用 lisp 源代码的两个解决方案。任何帮助将不胜感激!谢谢!

1.

(defun gift (N G)
(setq CR 9)
(setq i 3)
(cond ((= N G) "N and G equal")
((< N G) "Gift it on a rock outside limits")
((> N 49) "number of rocks is bigger than 49 - it will work")
((< N 9) "number of rocks is less than 9, it wont work")
((= N 0) "number of rocks is 0, it wont work")
((= G 0) "gift isn't on a rock, it wont work"))
(loop
(setq I (+ I 1))
(setq I (-(* I 2) 1))
(setq CR 9)
(breadth-search CR G #'lmg-moves)
(when (= CR G) (return "Let me Try!"))
(when (> CR N) (return "Don't laugh at me!"))
))

(defun lmg-moves (I)
(list (+ 9 I)
(- 9 I)
))

2.

(defvar *currentRock* 9)
(defvar *iterator* 3)

(defun gift (N G)
(setq *iterator* (+ *iterator* 1))
;; (breadth-search *currentRock* G #'LMG)
)

(defun LMG (a)
(+ a (-(* *iterator* 2) 1))
)

如上所示,总体思路是简单地将广度搜索函数与给定的合法移动生成器一起应用,希望通过分析它的输出,我们可以确定我们是否可以达到目标状态。如果上面的代码太困惑,我很乐意回答任何问题,再次感谢!

最佳答案

在其他潜在问题中:

你错误地使用了 LOOP。参见 PCL有关循环的信息。我对它进行了一些修改,但我不知道您在尝试什么。

推荐使用 SETF 而不是 SETQ,因为 SETF 更通用。

INCF 将一个位置递增 1。

你的缩进不好;如果你修复了这个问题,你会注意到你正在从 COND 的末尾掉到 LOOP 中。我建议使用自动缩进编辑器来使用 Lisp。 (Emacs 是备用)。

(defun gift (N G)
(setq CR 9)
(setq i 3)
(cond ((= N G) "N and G equal")
((< N G) "Gift it on a rock outside limits")
((> N 49) "number of rocks is bigger than 49 - it will work")
((< N 9) "number of rocks is less than 9, it wont work")
((= N 0) "number of rocks is 0, it wont work")
((= G 0) "gift isn't on a rock, it wont work")) )
(loop
while t
do
(setq I (+ I 1))
(setq I (-(* I 2) 1))
(setq CR 9)
(breadth-search CR G #'lmg-moves)
(when (= CR G)
(return "Let me Try!"))
(when (> CR N)
(return "Don't laugh at me!"))))

关于lisp - UVa 10120 礼物?!在普通 Lisp 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103918/

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