Lisp 如何使这个邻居发挥作用?
我有以下代码:Lisp 如何使这个邻居发挥作用?,lisp,common-lisp,Lisp,Common Lisp,我有以下代码: (defparameter fc #\F) (defparameter bc #\B) (defparameter gap #\G) (defun solp (seq) (if (eql fc (car seq)) (not (if (listp (cdr seq)) (find bc (cdr seq)) (eql seq bc))) (solp (cdr seq)))
(defparameter fc #\F)
(defparameter bc #\B)
(defparameter gap #\G)
(defun solp (seq)
(if (eql fc (car seq))
(not (if (listp (cdr seq))
(find bc (cdr seq))
(eql seq bc)))
(solp (cdr seq))))
(defun heuristic (seq &optional (f 0))
(if (eql nil seq)
0
(if (eql bc (car seq))
(+ f (heuristic (cdr seq) f))
(heuristic (cdr seq) (+ f 1)))))
(defun genneighbors (seq)
;seq == (fc fc gap bc bc) ===> neighbors == ( (gap fc fc bc bc)
; (fc gap fc bc bc)
; (fc fc bc gap)
; (fc fc bc bc gap) )
;I can't figure out how to do this
)
我不知道如何编写
genneights
函数。如何在gap
之前访问元素(2 | 1)插槽,如何生成所有四个可能的邻居?有人能给我一些指点吗 CLHS章节中的所有函数都适用于列表
还要注意,将全局变量命名为:*bc*、*fc*和*gap*是一种很好的编程风格(出于各种原因)
还要注意的是,在较新的代码中,经常使用FIRST代替CAR,REST代替CDR。这是家庭作业吗?从代码和示例中,很难推断函数应该做什么、应该接受什么输入以及应该生成什么输出。”例如,“启发式”是一个通用名称。更有趣的是这是一种什么样的启发。