Бузби Беркли Робот Хоки Поки
задача
Напишите программу или функцию для создания художественной анимации ASCII, изображающей линию роботов, танцующих под слова Хоки-Поки (или, если хотите, Кокки) в стиле числа Басби-Беркли!
Пример вывода
вход
Принимает три аргумента (предполагается, что они действительны):
N = количество роботов в линии (мин = 6)
B = продолжительность одного "удара" в миллисекундах (мин = 10)
D = задержка в мс между последовательными роботами (мин = 0)
(В приведенном выше примере: N = 8, B = 380, C = 75)
Характеристики
N роботов показаны подряд на сцене.
Одна строка текста из «стиха» отображается за один раз под сценой (по центру с точностью до 1 символа и заключена в кавычки).
Роботы выполняют действия для каждой строки, как показано, пока стих не будет повторен 5 раз.
Действие выполняется изображением робота с использованием набора символов ASCII и ожиданием указанной продолжительности перед выполнением следующего действия. Продолжительность действия измеряется в «битах». Длительность 1 такта является числом миллисекунд, В .
Первый робот начинает выполнять действия для каждой строки стиха сразу после отображения текста строки.
Каждый последующий робот откладывает свои действия до определенного времени ( D ) после того, как робот справа (слева!) Начнет свои действия.
Изображения роботов различаются символами ASCII, которые представляют «антенну» робота, из которых существует 5 возможных типов, распределенных случайным образом при каждом запуске программы.
Каждый тип антенны должен использоваться по крайней мере одним роботом, но тот же тип не должен появляться на любых роботах, разделенных менее чем 3 другими роботами. Количество любых двух типов антенн может отличаться не более чем на 1 (например, 1xType_4 и 3xType_5 недопустимы, поскольку 3-1> 1)
Стих и Действия
Весь стих повторяется 5 раз по 1 строчке за раз ...
Line Text Action/Beats,
---- ----------------------------- ------------------------------------
1 You put your ? in ??/4
2 You take your ? out AA/4
3 You put your ? in ??/4
4 And you shake it all about AA/1, ??/1, AA/1, ??/1
5 You do the Hokey Pokey and...
...you turn yourself around AA/1, H[1-7]/1
6 That's what it's all about! AA/4, ZZ/4
Для каждого повторения (R) стиха, заменить? а также ??...
R ?= ??=
-- ----------- ---
1. right foot RF
2. left foot LF
3. right hand RH
4. left hand LH
5. whole self WS
Действия и шаблоны ASCII
Каждое помеченное действие представлено 5 строками по 8 символов ASCII.
Представление каждого действия выглядит следующим образом ...
1 | 12 12 12 12 12 12 12
2 | [''] [''] [''] [''] [''] [''] \[*-]
3 | └[__]┘ └[__]┘ └[__]┘┌[__]┘ └[__]┐ ┌[__]┐ [__]\
4 | || /< >\ <\ /> / \ /|
5 |--------------------------------------------------------
|\__AA__/\__RF__/\__LF__/\__RH__/\__LH__/\__WS__/\__ZZ__/
1 | 12 12_ 34_ 34 _34 _12 12
2 | [''] [" ] [ _] [__] [_ ] [ "] ['']
3 | >[__]< [_<] [<.] <[..]> [.>] [>_] <[__]>
4 | || |\ || /| || |\ ||
5 |--------------------------------------------------------
|\__H1__/\__H2__/\__H3__/\__H4__/\__H5__/\__H6__/\__H7__/
В строке 1 заменить «1-4» соответствующим символом для каждого типа антенны ...
1 | 1234 1234 1234 1234 1234
| \/\/ |┌┐| )||( |||| ┐/\┌ <-- Symbols 1-4 for...
| 1 2 3 4 5 <-- ...antenna types 1-5
Выход
Вся сцена должна быть визуализирована, по крайней мере, один раз немедленно, когда содержимое сцены каким-либо образом изменяется. (Т.е. если допустить, что задержка между действиями роботов> 0, выходные данные могут отображаться не менее N раз за действие.)
В идеале для анимации консоль или эквивалентная область вывода очищается перед каждым обновлением. Чтобы обеспечить языки, не способные очистить консоль, вывод также может быть представлен в непрерывном потоке, при условии соблюдения тех же требований, описанных выше.
счет
Победителями являются самые короткие программы на каждом языке, а также самые короткие в целом.
Исключение 1 Поскольку очистка консоли каждого рендера предпочтительна, но не обязательна, байты, используемые исключительно для этой роскошной цели, не учитываются в общем количестве байтов. Это включает в себя команды для очистки консоли и заполнение вывода пустыми строками для прокрутки содержимого консоли вне поля зрения.
Исключение 2 CSS или эффективно аналогичные средства, используемые исключительно для стилизации выходных данных сверх минимальных требований, не учитываются в общем количестве байтов. Например, *{color:blue;text-align:center;}
считается только 32-10 = 22 байта, поскольку color:blue;
не служит для удовлетворения какой-либо спецификации, в то время как указывается центрированный текст.
Мета
Вдохновленный (показывая свой возраст) Танцы Demon TRS-80 , Android Nim , и конечно Басби Беркли (и нет, я не буду не что старый).