Buzzby Berkeley Robot Hokey Pokey
Tarea
¡Escriba un programa o función para producir una animación artística ASCII que represente una línea de robots bailando con la letra de Hokey Pokey (o Cokey, si lo prefiere) al estilo de un número de Busby Berkeley!
Salida de ejemplo
Entrada
Acepta tres argumentos (se supone que son válidos):
norte = número de robots en la línea (Min = 6)
si = duración de un "latido" en milisegundos (Min = 10)
re = retraso en ms entre robots sucesivos (Min = 0)
(En el ejemplo de salida anterior: N = 8, B = 380, C = 75)
Presupuesto
N robots se muestran en una fila sobre un escenario.
Se muestra una línea de texto de "el verso" a la vez debajo del escenario (centrada dentro de 1 carácter y entre comillas).
Los robots realizan las acciones para cada línea como se muestra hasta que el verso se repite 5 veces.
Una acción se realiza representando un robot usando un conjunto de caracteres ASCII y esperando una duración específica antes de realizar la siguiente acción. La duración de una acción se mide en "latidos". La duración de 1 latido es un número de milisegundos, B .
El primer robot comienza a realizar las acciones para cada línea del verso inmediatamente cuando se muestra el texto de la línea.
Cada robot posterior retrasa el inicio de sus acciones hasta un momento específico ( D ) después de que el robot a su derecha (¡su izquierda!) Comience sus acciones.
Las representaciones de los robots varían según los caracteres ASCII que representan la "antena" de un robot, de los cuales hay 5 tipos posibles, distribuidos aleatoriamente cada vez que se ejecuta el programa.
Cada tipo de antena debe ser utilizado por al menos un robot, pero el mismo tipo no debe aparecer en ningún robot separado por menos de otros 3 robots. Las cantidades de dos tipos de antenas pueden diferir en no más de 1 (por ejemplo, 1xType_4 y 3xType_5 es ilegal ya que 3-1> 1)
Verso y acciones
Todo el verso se repite 5 veces, 1 línea a la vez ...
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
Para cada repetición (R) del verso, ¿sustituir? y ?? ...
R ?= ??=
-- ----------- ---
1. right foot RF
2. left foot LF
3. right hand RH
4. left hand LH
5. whole self WS
Acciones y patrones ASCII
Cada acción etiquetada está representada por 5 líneas de 8 símbolos ASCII.
La representación de cada acción es la siguiente ...
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__/
En la fila 1, reemplace "1-4" con el símbolo correspondiente para cada tipo de antena ...
1 | 1234 1234 1234 1234 1234
| \/\/ |┌┐| )||( |||| ┐/\┌ <-- Symbols 1-4 for...
| 1 2 3 4 5 <-- ...antenna types 1-5
Salida
La escena completa debe representarse al menos una vez inmediatamente cuando el contenido de la escena cambie de alguna manera. (Es decir, suponiendo que el retraso entre las acciones de los robots es> 0, la salida se puede representar no menos de N veces por acción).
Idealmente, para una animación, la consola o el área de salida equivalente se borra antes de que se presente cada actualización. Para proporcionar idiomas que no pueden borrar la consola, la salida también se puede representar en un flujo continuo, sujeto al mismo requisito descrito anteriormente.
Tanteo
Los ganadores son los programas más cortos en cada idioma, así como los más cortos en general.
Excepción 1 Debido a que es preferible borrar la consola de cada render, aunque no es obligatorio, los bytes utilizados exclusivamente para este lujoso propósito no cuentan para el total de bytes. Esto incluye comandos para borrar la consola y resultados de relleno con líneas en blanco para desplazar el contenido de la consola fuera de la vista.
La excepción 2 CSS o medios similares efectivamente utilizados exclusivamente con el propósito de diseñar la salida más allá de los requisitos mínimos no cuentan para el total de bytes. Por ejemplo, *{color:blue;text-align:center;}
cuenta como solo 32-10 = 22 bytes ya color:blue;
que no sirve para satisfacer ninguna especificación, mientras que se especifica el texto centrado.
Meta
Inspirado por (mostrando mi edad) el Demonio Bailar TRS-80 , Android Nim , y por supuesto Busby Berkeley (y no, no estoy de que edad).