Racket 球拍挂接龙无法达成解决方案

Racket 球拍挂接龙无法达成解决方案,racket,Racket,我在写一个球拍节目时遇到了问题。我们使用的是中级学生的Lambda语言,可以使用其中包含的任何内容。我的任务是制作一种Peg纸牌,一旦程序计算出解决方案,它就会以幻灯片的形式显示解决方案(此代码在说明中给出)。我的问题是,我的程序似乎要么没完没了地循环,要么就是无法找到基于电路板的解决方案。本合同为我们提供了功能(查找路线初始状态?: find route:X(X->(listof X))(X->Bool)->(anyof false(listof X)) 它将产生一系列状态,直到解决方案 我用

我在写一个球拍节目时遇到了问题。我们使用的是中级学生的Lambda语言,可以使用其中包含的任何内容。我的任务是制作一种Peg纸牌,一旦程序计算出解决方案,它就会以幻灯片的形式显示解决方案(此代码在说明中给出)。我的问题是,我的程序似乎要么没完没了地循环,要么就是无法找到基于电路板的解决方案。本合同为我们提供了功能
(查找路线初始状态?

find route:X(X->(listof X))(X->Bool)->(anyof false(listof X))

它将产生一系列状态,直到解决方案

我用这个函数调用它:

(定义(纸牌板状态解决方案)
(查找路由状态(设置相邻线路板)(设置已解决?解决方案))

其中,
make neights
是一个工作函数,它在给定状态下产生所有可能的移动(我已经对该函数进行了广泛的测试,它似乎不是问题,但它很长,所以我不太愿意复制/粘贴它)。另外,
make solved?
也是一个工作函数,它生成一个确定给定状态是否为解决方案的函数


我认为问题出在
纸牌游戏中,但我似乎不知道出了什么问题。如果您需要任何其他信息,请告诉我。

您需要找出问题所在

我建议您插入一个显示器,以查看算法的进展情况:

(define (solitaire board state solution)
  (begin
    (display (list board state solution))
    (newline)
    (find-route state (make-neighbours board) (make-solved? solution))))

然后研究输出。您希望找到算法卡住的状态。

我遇到了一个问题,
begin
没有定义。有没有办法用lambda在中级学员中编写此显示函数?暂时(就在您追踪问题的时候)将语言更改为高级。确定问题后,再次更改语言。我已修复它。如果你想知道问题出在哪里,那就是邻居。我忘了检查它的条件。无论如何谢谢你的帮助。