Вызов
Напишите полную программу / функцию, чтобы Разрушить данное здание со скоростью 1 этаж в секунду .
ВХОД
Ввод - это построение через STDIN (или как там называется на вашем языке) или через аргумент функции. t = 0 с
|
|#|
{#}
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
вход состоит из:
|
отмечает начало и конец пола.{
,}
отмечает пол взрывчаткой.#
это окно для украшения.это пространство, которое везде внутри этажей, где
#
его нет.T
отмечает землю (не может быть снесен).*
отмечает взорванный пол.
Правила ввода:
- строительство начинается сверху одним
|
и заканчивается на земле (без (T
) = нет (char used in ground floor
)). - окно
#
в каждом странном месте на каждом этаже. T
отмечает конец вашего ввода.- только один этаж состоит из взрывчатых веществ.
- каждый этаж сделан из нечетного нет. символов
- когда вы поднимаетесь вниз по этажам, этажи могут быть одинакового размера с этажами предыдущего этажа или могут быть на 2 знака больше.
- Ввод может быть принят как массив
chars
илиstrings
.
Выход :
t = 0,5 с
|
|#|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1 с
|
|#|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1,5 с
|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2 с
|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2,5 с
*
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3 с
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3,5 с
*****
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4 с
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4,5 с
*******
|# # #|
|# # #|
TTTTTTT
t = 6,5 с
*******
TTTTTTT
t = 7 с
TTTTTTT
Правила вывода:
- каждый этаж заканчивается одним
newline
персонажем. - земля может / не может иметь завершающий символ новой строки.
- выводить здание (или то, что от него осталось) каждые 0,5 с.
- Вывод похож на анимацию, которая изменяется каждые 0,5 с и отображается.
(Также не стесняйтесь размещать GIF с вашим ответом)
Это Code-Golf, поэтому выигрывает код в кратчайших байтах!
последняя дата подачи ровно через 5 дней
(Но вы знаете, что? Победа - это еще не все, не стесняйтесь пробовать это испытание на своем любимом языке, даже после того, как был объявлен победитель:]).
РЕДАКТИРОВАТЬ: Я изменил способ, которым вы принимаете вход (мой плохой на самом деле).
Ответы:
Vim,
4138 байтЗдесь
^
используется для буквальной каретки; For используется для CTRL-M.объяснение
qw:sl 500m␍q
спит полсекунды, а полсекунды записывает как макрос w./{␍
движется к полу со взрывчаткой.qq
начинает запись макроса q, который будет рекурсивно вызывать себя.jk
движется вниз и вверх; это приводит к ошибке, если вы находитесь на последней линии (земля); ошибка завершает рекурсивный макрос.^v$r*
заменяет все от первого непробельного символа до конца строки с *.@w
ждет полсекунды, затемdd
удаляет текущий этаж.:-␍
поднимается на пол, не заканчивая макрос, если вы находитесь на верхней строке.@w
затем ждет еще полсекунды и@q
вызывает макрос q (изначально пустой).q@q
останавливает запись макроса q, затем вызывает его, вызывая рекурсию.Анимация
источник
my answer could be "golfed" further
... не , что достаточно? : PJavaScript (ES6),
208198 байтисточник
Java 7,
589477476 байтХорошо, это беспорядок / длинный, но этот вызов имеет так много раздражающих вещей для Java .. Печать многострочных;
Thread.sleep(500)
который требуетthrows Exception
; замена подстроки между двумя разделителями равным количеством*
; и т. д.Все это приводит к тому, что программа становится довольно большой. Определенно ее можно сыграть в гольф еще, возможно, даже вдвое с другим подходом, но, по крайней мере, сейчас есть ответ. ;)
Ungolfed:
Тестовый код:
Попробуй это здесь. (На ideone выводит сразу и игнорирует
sleep
..)источник
try{...}finally{return;}
?throws Exception
Haskell,
245221 байтПример использования:
Как это работает:
Примечание: есть также
threadDelay
from,GHC.Conc
а неusleep
from,System.Posix.Unistd
который немного короче, но он работает только сGHC
компилятором, поэтому он не будет общимHaskell
ответом.источник
C,
314287281271 байт-10 после изменения ,
!=
чтобы-
и избежать полукокса литералов , когда это возможно, а такжеisspace
(многие благодаря H Walters). Но негольфированный код остается неизменным.-6 байт после применения комы и удаления
{}
после двухif
.-26 байт после небольшой оптимизации, удаления ненужных скобок, а также изменения локальных переменных на глобальные (с автоматической инициализацией 0) и
b[0]
by*b
.Тестовый код с ungolfed
f
:источник
s,e,t
снаружи глобально, как этоs,e,t;
i
с другими.Perl, 153 байта
Это использует команду сна GNU для ожидания 500 миллисекунд.
Неуправляемая версия
источник
PHP,
286282274234229 байтпринимает входные данные в виде списка строк из аргументов командной строки (без символа новой строки!)
сохранить в файл, запустить с
php <filename> ' |' ' |#|' ' {#}' ' |# #|' '|# # #|' '|# # #|' '|# # #|' 'TTTTTTT'
сломать
источник