gpt4 book ai didi

list - 值列表 : a proper list must not end with 1 - nQueens

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

前几天我问了一个关于我的 nQueens 问题的问题,并收到了很多很好的答案,所以我想我会再问一次,因为我非常接近完成这个威胁功能。我的职责是确定水平、垂直或对角线上的威胁。我的输入是这样的:

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

它给出一个新的给定位置并检查将其放在板上是否会产生任何问题。到目前为止,我的代码如下:

*我已将对角线拆分为它自己的函数以使代码更具可读性

(defun diagonal(point1 point2)
(= (abs (- (values-list ( car point1 )) (values-list (car point2))))
(abs (- (values-list ( cdr point1 )) (values-list (cdr point2)))))
)

(defun THREAT?(x y)
; Checks threat on the vertical
(when (not (eq (values-list (cdr (nth (- (car x) 1 ) y )) ) '0 ) )
(return-from THREAT? t)
)
(loop for i from 0 to (list-length y)

; Checks threat on the horizontal
when (eq (values-list ( cdr x )) (values-list (cdr (nth i y))) )
do (return-from THREAT? t)
; With the help of the diagonal function checks along the diagonal
when (diagonal x (nth i y) )
do (return-from THREAT? t)
)
)

*垂直和水平功能工作正常,因为我已经注释掉对角线并检查了两个。

我不是在编译时而是在运行我的代码时收到错误消息:

VALUES-LIST:正确的列表不能以 1 结尾

我怀疑我的对角线函数有问题。我不明白为什么 values-list 会成为问题,因为我已经在完全相同的代码中使用了几次,没有出现任何问题。我认为应该给对角线函数两个列表 (1 3)(2 4) 例如,将每个列表的汽车都设为 (1)(2) 然后应用值列表并将值从括号中拉出然后被操纵。非常感谢任何帮助!

最佳答案

使用 values-list 的想法毫无意义。

(defun diagonal (point1 point2)
(= (abs (- (values-list ( car point1 )) (values-list (car point2))))
(abs (- (values-list ( cdr point1 )) (values-list (cdr point2))))))

现在我们调用:

(diagonal '(1 3) '(1 0))

point1(1 3)

现在调用 (CAR '(1 3))。结果是 1。然后调用 (VALUES-LIST 1)。但为什么??? (VALUES-LIST 1) 不起作用,因为 VALUES-LIST 需要一个列表作为参数。但是 1 不是一个列表,而是一个数字。 --> 错误

VALUES-LIST 将列表的内容作为多个值返回。但是由于您的代码不以任何方式处理多个值,所以它根本没有意义。

关于list - 值列表 : a proper list must not end with 1 - nQueens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39882572/

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