gpt4 book ai didi

list - n-Queens - 逻辑错误 - 确定垂直威胁

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

在这个程序中,我将确定放置皇后是否会对棋盘造成威胁。这将使用位置 1 - 8(可以展开)作为行和列。如果一列中没有棋子,则该行的 y 将为 0(否则为相应的 y)。空板将如下所示:((1 0)(2 0)(3 0)(4 0)(5 0)(6 0)(7 0)(8 0))

我编写了以下程序来确定给定的移动是否会导致垂直威胁:

(defun THREAT? (x y)
(not (eq
(cdr (nth (car x) y ))
0
)
)
)

这将是我的输入:

(威胁?'(1 3)'(1 0)(2 4)(3 7)(4 3)(5 2)(6 8)(7 5)(8 1))

我的想法是,我捕获第一个参数的汽车(我正在检查的 x 值),使用它来访问第二个列表中的正确元素,并找到该元素的 cdr,它将给我它的 y值(value)。然后我检查它是否为 0,如果它不为 0,那么它将是一个威胁。 我还没有添加检查水平和对角线的功能,所以我怀疑我可以通过条件语句或 if 语句轻松实现这一点,但我想在继续之前解决我对此的理解问题

我的错误如下:

*** - EVAL:2 不是函数名;尝试使用符号代替

非常感谢任何帮助!


修复该错误后,我发现我的程序将始终返回 true。当输入 '(1 3) '((1 0)...) 它会返回 true 尽管 (1 0) 的 0 应该发现它等于 0,返回 true 然后否定 true 从而返回false,但我的程序将始终返回 true。

编辑:修正之前的错误信息

最佳答案

看看为什么 (threat? '(1 3) '((1 0) (2 4) (3 7) (4 3) (5 2) (6 8) (7 5) (8 1 )))返回true,一定要看nth的定义

Note that the elements are numbered from zero, not one.

因此,(nth 1 '((1 0) (2 4) (3 7) ...)) 返回 (2 4)(我们在这里再次 :-) 而不是 (1 0)

关于list - n-Queens - 逻辑错误 - 确定垂直威胁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39861746/

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