【发布时间】:2021-08-23 01:44:43
【问题描述】:
我开始编写一个函数来查看皇后是否相对于棋盘上的其他位置是“安全的”,棋盘的形式为(row col) 和 1-indexed。到目前为止,这是我所拥有的:
(define (get-row p) (car p))
(define (get-col p) (cadr p))
(define (is-equal p1 p2)
(and (= (car p1) (car p2)) (= (cadr p1) (cadr p2))))
(define (safe? k positions)
(filter
(lambda (p) (not (and (is-equal p
(list (get-row p) k))
(is-equal p
(list (+ (get-row p) (- k (get-col p)))
k
))
(is-equal p
(list (- (get-row p) (- k (get-col p)))
k
)))))
positions))
我想这样称呼它:
(safe? 4 '((3 1) (1 2) (4 3) (2 4)))
查看棋盘上位置(2 4) 的第四个皇后(第四列)是否安全。
但是,我目前拥有的内容超出了标记范围,并且基本上返回了所有“其他”列,而不是我想要的列。有什么更好的方法来做到这一点?
【问题讨论】: