Лабиринт под уклоном представлен в виде ряда строк, разделенных пробелами от 0 до 9 включительно, плюс один «S» и один «X», где S обозначает начало, а X обозначает конец. В спусковом лабиринте вы можете идти только в пространство, которое находится рядом с вами на севере, юге, востоке или западе (без диагоналей), и вы можете ходить только в пространства со значением, которое меньше или равно значению, которое вы в настоящее время включены.
Программа должна выводить путь для навигации по лабиринту в том же формате, что и ввод, только "все" пройденные пробелы должны иметь "." в них и во всех не посещаемых местах должно быть "#". Начальная и конечная ячейки также должны сохранять свои «S» и «X» соответственно. Вы можете предположить, что всегда есть решение лабиринта.
Пример ввода:
3 3 3 3 2 1 S 8 9
3 1 1 3 3 0 6 8 7
1 2 2 4 3 2 5 9 7
1 2 1 5 4 3 4 4 6
1 1 X 6 4 4 5 5 5
Пример вывода:
. . . . # # S . #
. # # . . # # . .
. # # # . # # # .
. # # # . # # # .
. . X # . . . . .
S
иX
в любом направлении? Всегда ли лабиринт разрешим?0
до9
включительно, верно?Ответы:
JavaScript (ES6) 219
Функция, возвращающая истину или ложь. Решение (если найдено) выводится на консоль. Он не пытается найти оптимальное решение.
Неутоленный до смерти и объяснил больше, чем нужно
Тест в консоли Firefox / FireBug
Вывод
источник
C # - 463
Принимает ввод через STDIN и должен давать оптимальный путь, проверенный для данного контрольного примера, но не иначе. Предполагается, что всегда есть решение.
Я немного тороплюсь, у меня есть срок в 7 часов, но это выглядело слишком весело, чтобы его пропустить. Я тоже вне практики. Это может быть очень неловко, если это пойдет не так, но это разумно.
Код с комментариями:
источник