Соревнование
Ваша задача - оживить Adve Adventurer, движущегося через жуткий (т. Е. Хэллоуин) лабиринт. Adve является •
; он характерный персонаж, однако, он не против того, чтобы его представлял другой персонаж.
Чтобы оживить Adve, вы распечатываете каждый кадр; рамка - это карта с его текущим местоположением. Adve перемещается на одну позицию вперед каждый ход и никогда не отступает. Он начинается в первом ряду и заканчивается в последнем.
вход
Любой разумный формат, такой как строка с разделителем или строковый массив. Вы можете предположить, что на входе будет карта размером более 3 * 3, содержащая только один возможный путь. Единственные присутствующие символы будут #
и .
Выход
Кадры
Пример лабиринта ( ок ... лабиринт )
Вот карта без Adve в нем; первый и последний кадры - это пустая карта (9x15):
### #####
## #####
## ######
## #
####### #
# ### #
# # # #
# # ###
# #######
# ####
#### ####
#### ###
##### ###
##### ###
##### ###
Это код-гольф , поэтому выигрывает самый короткий код в байтах!
Точный выход для этого можно найти здесь (37 кадров).
Ответы:
Perl, 84 байта
Спасибо @Ton Hospel за то, что он направил меня в правильном направлении для игры в гольф около 30 байтов!
Bytecount включает в себя 82 байта кода и
-0p
флагов.Обратите внимание, что есть два последних пробела и нет заключительного перевода строки (иначе это не сработает).
Принимает лабиринт в качестве входных данных и выводит все необходимые кадры, чтобы Adve мог выбраться из него. Обратите внимание, что Adve - это
&
скорее a•
, чем a , поскольку последний не utf8 (и perl по умолчанию не использует utf8). Запустите его с-0pE
флагами:Просто для глаз я также сделал эту анимированную версию, которая немного длиннее, но очистит терминал между каждым отпечатком и сном на 0,15 секунды, так что похоже, что Adve действительно движется:
источник
$s="@+"
, раньше я не понимал, что@+
он изменяется только в случае успешного выполнения регулярного выражения. Иredo
вместо того, чтобыwhile
сохранить один или два байта). Любой намек на то, как играть в гольф больше? Я предполагаю, что должен как-то избавиться от нихy///
, или сделатьs///
короче ... но в любом случае я не знаю как.y///
хорошо, так как вам нужно что-то, чтобы указать направление (но обратите внимание, что вы можете выбрать, с какой стороны) Но главное улучшение будет от объединения заменs/ &/&A/
иs/& /A&/
вместе (и рядом с ними), чтобы увидеть, что это не было регулярным выражением, которое мне нужно было объединить! Большое спасибо! (И спасибо, что позволили мне узнать, как играть в гольф!)JavaScript (ES6), 137
(1 байт сохранен, спасибо @ETHproductions)
Меньше гольфа
Тестовое задание
источник