Haskell - Расчет кратчайшего пути с использованием деревьев
я пытаюсь написать код на haskell, который идет из точки A в точку F в настольной игре, которая, по сути, представляет собой матрицу по кратчайшему пути.
Это доска:
AAAA
ACCB
ADEF
*
0 0 N
Робот входит в букву А внизу (где это *) и должен достичь F, в нижней части доски находятся координаты x = 0, y = 0 и указывающие на север. Координата F равна (3,0)
Хитрость в том, что он не может прыгать больше, чем на одну букву, он может переходить от A к B, B к C и т. Д., И он может проходить по буквам типа (от A до A, B к B и т. Д.)
Он может двигаться только вперед и делать повороты (влево, вправо), поэтому путь, по которому я могу перейти к F, будет
Вперед, вперед, вправо, вперед, вперед, вперед, вправо, прыжок, вправо, прыжок, вперед, влево, прыжок, влево, вперед, вперед
Как только он достигает F, все готово.
Я хочу попробовать этот подход, используя дерево
A
/ \
A D
/ \
/ \
A C
/ \ / \
/ \ D C
A
/ \
/ \
A
/
/
A
/ \
B A
/ \
C F
После этого мне нужно будет только проверить правильный путь и кратчайший путь?
Проблема в том, что у меня нет такого большого опыта использования деревьев.
Не могли бы вы указать другой способ получить лучший путь?
Большое спасибо .