버즈 비 버클리 로봇 하키 포키
태스크
Busby Berkeley 수 스타일로 Hokey Pokey (또는 원하는 경우 Cokey)의 가사에 맞춰 춤을 추는 로봇 라인을 묘사하는 ASCII 아트 애니메이션을 제작하는 프로그램 또는 기능을 작성하십시오!
출력 예
입력
세 가지 인수를 허용합니다 (유효하다고 가정).
N = 라인의 로봇 수 (최소 = 6)
B = 1 "비트"지속 시간 (밀리 초) (최소 = 10)
D = 연속 로봇 간 ms 지연 (최소 = 0)
(위 출력 예에서 : N = 8, B = 380, C = 75)
명세서
무대 위에 N 개의 로봇이 연속으로 표시됩니다.
"절"의 한 줄의 텍스트가 무대 아래에 한 번에 표시됩니다 (1 문자 이내로 중앙에 따옴표로 묶음).
로봇은 구절이 5 번 반복 될 때까지 표시된대로 각 선에 대해 동작을 수행합니다.
조치는 ASCII 문자 세트를 사용하여 로봇을 묘사하고 다음 조치를 수행하기 전에 지정된 기간 동안 대기하여 수행됩니다. 동작 지속 시간은 "비트"로 측정됩니다. 1 비트의 지속 시간은 밀리 초 ( B) 입니다.
첫 번째 로봇은 라인의 텍스트가 표시 될 때 각 라인의 각 라인에 대한 작업을 즉시 시작합니다.
이후의 각 로봇 은 로봇이 오른쪽 (왼쪽!)으로 동작을 시작한 후 특정 시간 ( D ) 까지 동작 시작을 지연시킵니다 .
로봇의 묘사는 로봇의 "안테나"를 나타내는 ASCII 문자에 따라 달라지며, 그 중 5 가지 유형이 있으며 프로그램이 실행될 때마다 무작위로 배포됩니다.
각 유형의 안테나는 최소한 하나의 로봇에서 사용해야하지만 다른 유형의 로봇 3 개 미만으로 분리 된 로봇에는 동일한 유형이 나타나지 않아야합니다. 두 종류의 안테나의 양은 1 이하로 다를 수 있습니다 (예 : 1xType_4 및 3xType_5는 3-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 패턴
레이블이 지정된 각 조치는 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 댄스 악마 , 안드로이드 님 , 그리고 물론 버스비 버클리 (더, 나는 아니에요없는 그 이전).