Вот интересная проблема для решения в минимальном количестве кода. Я ожидаю, что рекурсивные решения будут самыми популярными.Code Golf: Решите лабиринт
У нас есть лабиринт, который определен как отображение символов, где =
является стеной, пространство представляет собой путь, +
является отправной точкой, и #
ваша конечная точка. Невероятно простой пример, как так:
====
+ =
= ==
= #
====
Вы можете написать программу, чтобы найти самый короткий путь для решения лабиринта в этом стиле, как мало коды, насколько это возможно?
Бонусные баллы, если они работают для всех входов лабиринта, например, с дорожкой, пересекающей себя или с огромным количеством ветвей. Программа должна иметь возможность работать на больших лабиринтах (например, 1024x1024 - 1 МБ), а также то, как вы проходите лабиринт программы, не имеет значения.
«Игрок» может перемещаться по диагонали. Входной лабиринт никогда не будет иметь диагонального прохода, поэтому ваш базовый набор движений будет вверх, вниз, влево, вправо. Движение по диагонали будет просто немного заглядывать вперед, чтобы определить, можно ли объединить вверх/вниз и влево/вправо.
Вывод должен быть самым лабиринтом с самым коротким путем, выделенным с использованием символа звездочки (*
).
Хороший вопрос, но выглядит довольно сложно ... – RCIX
Может ли игрок (+) перемещаться по диагонали или только по горизонтали/по вертикали? – Alex
Игрок может двигаться по диагонали, что должно сделать вещи немного проще. –