Buzzby Berkeley机器人Hokey Pokey
任务
写一个程序或函数来产生ASCII艺术动画,描绘出一系列机器人以Busby Berkeley编号的风格随着Hokey Pokey(或Cokey,如果您愿意的话)的歌词跳舞!
示例输出
输入项
接受三个参数(假设是有效的):
N =生产线上的机器人数量(最小值= 6)
B =一次“拍子”的持续时间(以毫秒为单位)(最小值= 10)
D =连续机器人之间的毫秒延迟(最小值= 0)
(在上面的示例输出中:N = 8,B = 380,C = 75)
技术指标
舞台上连续显示N个机器人。
舞台下方一次显示“诗句”中的一行文本(居中到1个字符内,并用引号引起来)。
机器人对每行进行操作,直到每行重复5次为止。
通过使用一组ASCII字符描绘机器人并执行指定的持续时间,然后执行下一个动作,来执行动作。动作的持续时间以“节拍”为单位。1所拍的持续时间是一毫秒数,乙。
当第一个机器人显示一行经文时,它会立即开始对每一行经文执行动作。
随后的每个机器人都将其动作延迟到在其右侧(您的左侧!)机器人开始其动作之后的特定时间(D)为止。
机器人的描述因ASCII字符而异,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;
,而指定了居中文本。
元
灵感来自于(展示我的年龄)TRS-80跳舞恶魔,Android Nim,当然还有Busby Berkeley(不,我还不那么老)。