这是我的代码:
maxX=8; maxY=8;
maxSteps=60 -- If I change maxSteps=55 I get an answer
move :: [(Int, Int)] -> [( Int, Int)]
move list
| lastX>maxX || lastY>maxY || lastX<=0 || lastY<=0 = []
| lastMove `elem` (init list) = []
| length list == maxSteps = list
| length m1 == maxSteps = m1
| length m2 == maxSteps = m2
| length m3 == maxSteps = m3
| length m4 == maxSteps = m4
| length m5 == maxSteps = m5
| length m6 == maxSteps = m6
| length m7 == maxSteps = m7
| length m8 == maxSteps = m8
| otherwise = []
where lastMove = last list
lastX = fst lastMove
lastY = snd lastMove
m1 = move (list ++ [(lastX+1,lastY+2)])
m2 = move (list ++ [(lastX+2,lastY+1)])
m3 = move (list ++ [(lastX-1,lastY+2)])
m4 = move (list ++ [(lastX-2,lastY+1)])
m5 = move (list ++ [(lastX+1,lastY-2)])
m6 = move (list ++ [(lastX+2,lastY-1)])
m7 = move (list ++ [(lastX-1,lastY+2)])
m8 = move (list ++ [(lastX-2,lastY-1)])
y = move [(1,1)]
main = print $ y
你知道为什么它永远不会完成吗(也许我可以再等一下......)?您是否有其他解决方案来实现相同的蛮力算法但会更快?