В настоящее время мы программируем игру (довольно неизвестный язык: modula 2),
И проблема, с которой мы столкнулись, заключается в следующем: у нас есть лабиринт (не идеальный лабиринт) в сетке 17 x 12. Компьютер должен создать путь от начальной точки (9, 12) до конечной точки (9, 1). Я нашел некоторые алгоритмы, но они не работают, когда роботу приходится возвращаться:
xxxxx
x
=> x
x
xxx
или
xxxxx
x
xxxxxx x
x x
x x
xxxxxx x
=> x
xxxxxxxxx
Я нашел решение для первого типа примера, но затем второй тип не мог быть решен, и решение, которое я придумал для второго типа, заставило бы робота застрять в ситуации первого типа.
Это много кода, поэтому я дам идею:
WHILE (конечный пункт назначения не достигнут) DO {
попробуйте идти направо, если ничто не блокирует вас: идите направо
если вы столкнетесь с блоком, попробуйте подняться до тех пор, пока вы не пойдете направо, если вы больше не можете подниматься, попробуйте спуститься, пока вы не пойдете направо (начиная с места, где вы впервые были заблокированы), если вы не можете больше падать, попробуйте сделать один шаг оставьте и заполните пробелы, которые вы тестировали с блоками.
}
Это работает для первого типа проблемы ... не для второго.
Теперь я могу ошибаться, поэтому я открыт для более совершенных алгоритмов или решений, в особенности для того, как я мог бы улучшить свой алгоритм.
Большое спасибо !!