バズビーバークレーロボットホーキーポーキー
仕事
Busby Berkeleyの数字のスタイルでHokey Pokey(またはお好みであればCokey)の歌詞に合わせて踊るロボットのラインを描いたASCIIアートアニメーションを作成するプログラムまたは関数を作成してください!
出力例
入力
3つの引数を受け入れます(有効と見なされます)。
N =ライン内のロボットの数(最小= 6)
B =ミリ秒単位の1つの「ビート」の持続時間(最小= 10)
D =連続するロボット間のミリ秒単位の遅延(Min = 0)
(上記の出力例では、N = 8、B = 380、C = 75)
仕様書
N台のロボットがステージ上に連続して表示されます。
「詩」からの1行のテキストがステージの下に一度に表示されます(中心が1文字以内で、引用符で囲まれています)。
ロボットは、詩が5回繰り返されるまで、示されているとおりに各行のアクションを実行します。
アクションは、ASCII文字のセットを使用してロボットを描写し、次のアクションを実行する前に指定された期間待機することによって実行されます。アクションの継続時間は「ビート」で測定されます。1ビートの持続時間はミリ秒数Bです。
最初のロボットは、行のテキストが表示されるとすぐに、詩の各行に対してアクションの実行を開始します。
後続の各ロボットは、右側のロボット(左側)がアクションを開始してから特定の時間(D)までアクションの開始を遅らせます。
ロボットの描写は、ロボットの「アンテナ」を表すASCII文字によって異なります。5つのタイプがあり、プログラムが実行されるたびにランダムに配布されます。
各タイプのアンテナは少なくとも1つのロボットで使用する必要がありますが、3つ未満のロボットで区切られたロボットには同じタイプを使用しないでください。任意の2種類のアンテナの量は、1を超えて異なることはできません(たとえば、1xType_4および3xType_5は3-1> 1なので違法です)
詩とアクション
詩全体が一度に1行ずつ5回繰り返されます...
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パターン
各ラベル付きアクションは、8つのASCIIシンボルの5行で表されます。
各アクションの表現は次のとおりです...
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
出力
シーンのコンテンツが何らかの方法で変更されるたびに、シーン全体を少なくとも1回直ちにレンダリングする必要があります。(つまり、ロボットのアクション間の遅延が> 0であると仮定すると、出力はアクションごとにN回以上レンダリングされる場合があります。)
理想的には、アニメーションの場合、各更新がレンダリングされる前にコンソールまたは同等の出力領域がクリアされます。コンソールをクリアできない言語に対応するため、上記と同じ要件に従って、出力を連続ストリームでレンダリングすることもできます。
得点
勝者は、各言語で最も短いプログラムであり、全体で最も短いプログラムです。
例外1必要ではありませんが、各レンダリングをコンソールから消去することが望ましいため、この豪華な目的のために排他的に使用されるバイトは合計バイトにカウントされません。これには、コンソールをクリアするコマンドと、コンソールの内容を表示外にスクロールするために出力に空白行を埋め込むことが含まれます。
例外2 CSS、または最小要件を超えて出力をスタイリングする目的でのみ使用される事実上同様の手段は、合計バイトにカウントされません。たとえば、中心のテキストが指定されているのに、仕様を満たすために役立たないため、*{color:blue;text-align:center;}
32-10 = 22バイトのみとしてカウントされcolor:blue;
ます。
メタ
TRS-80 Dancing Demon、Android Nim、そしてもちろんBusby Berkeleyからインスピレーションを得ました(そして、いや、私はそんなに古いわけではありません)。