Я реализую это в haskell.
https://www.cs.bu.edu/teaching/alg/maze/ а>
Я могу получить список, когда «цель» достигнута, но если цель недоступна, список не обновляется. Например
...#@ !!!#@
..#.. !!#..
.##.# it should return !##.#
...#. !!!#.
Мой код следующим образом
path maze x y
| x >= length (head maze) = (False, maze)
| y >= length maze = (False, maze)
| x < 0 = (False, maze)
| y < 0 = (False,maze)
| check maze x y '+' = (False, maze)
| check maze x y '#' = (False,maze)
| check maze x y '!' = (False, maze)
| check maze x y 'G' = (True,maze)
| fst east = (True,snd east)
| fst south = (True, snd south)
| fst west = (True, snd west)
| fst north = (True, snd north)
| fst noWay = (True, snd noWay)
| otherwise = (False, maze)
where
noWay = path (changeVal maze x y '!') x (y+1)
north = path(changeVal maze x y '+') x (y-1)
south = path (changeVal maze x y '+') x (y+1)
east = path (changeVal maze x y '+') (x+1) y
west = path (changeVal maze x y '+') (x-1) y
Я не получаю результат. Я новичок в Haskell, может ли кто-нибудь помочь мне, чтобы я мог решить эту глупую проблему.