- сторонними библиотеками и классами пользоваться нельзя,
- в программе должен содержаться файл test.java с методом public static void main(String[] args) , который и запустит весь процесс загрузки данных, нахождения оптимального пути и вывода итогов
- оптимально: путь к файлам можно параметризировать
Выход из лабиринта
Задание: Необходимо описать алгоритм нахождения оптимального (кол-во шагов наименьшее) выхода из заданного лабиринта. Движение возможно только по свободным ячейкам. Перепрыгивать стены нельзя. Создать файл output.txt, в котором будет содержаться количество шагов и строка с движениями игрока по лабиринту, разделенных пробелом.
Описание: В исходном файле maze.txt описан лабиринт вида (m х n), где точка (1,1) - точка начала движение по лабиринту, а точка (m,n) - конец либиринта. Y - свободная ячейка, N - стена. В исходном файле player.txt описан тип движения игрока, движущегося по лабиринту. Возможные варианты значений: u - вверх (от англ. Up) d - вниз (Down) l - влево (Left) r - вправо(Right) ul - по диагонали вверх влево. Можно поменять местами. ur - по диагонали вверх вправо. Можно поменять местами. dl - по диагонали вниз влево. Можно поменять местами. dr - по диагонали вниз вправо. Можно поменять местами.
Возможны любые комбинации этих вариантов (разделены пробелом), пример:
u r dr - движение на 1 ячейку вверх, 1 ячейку направо и по диагонали направо вниз. r r r ld - движение на 3 ячейки вправо и на 1 ячейку по диагонали влево вниз.
Тип движения может состоять из множества вариантов, это значит, что за один шаг игрок, движущийся по лабиринту, может пройти любым из перечисленных способов.
Пример входных значений:
maze.txt
YNNNNNYYYY YYYNNYYNNY YNYYYYNNYY NYYNNNNNYN YYNNNNYYYN NYYYNNYNNN YYNYNNYYYN YNNYYYYNYY YNNYNNNNNY YYYYNNNNNY
player.txt
r l d ur dl d d r dr dr r
Пример выходных значений:
output.txt
15 dr dr r r ur ur r r r d d dl dl dl dr dr r d d