Buzzby Berkeley Robot Hokey Pokey
Tugas
Tulis program atau fungsi untuk menghasilkan animasi seni ASCII yang menggambarkan sederet robot menari dengan lirik Hokey Pokey (atau Cokey, jika Anda mau) dalam gaya nomor Busby Berkeley!
Contoh Output
Memasukkan
Terima tiga argumen (dianggap valid):
N = jumlah robot dalam garis (Min = 6)
B = durasi satu "ketukan" dalam milidetik (Min = 10)
D = keterlambatan dalam ms antara robot yang berurutan (Min = 0)
(Pada contoh output di atas: N = 8, B = 380, C = 75)
Spesifikasi
N robot ditampilkan secara berurutan di atas panggung.
Satu baris teks dari "ayat" ditampilkan pada waktu di bawah panggung (berpusat pada 1 karakter, dan diapit dengan tanda kutip.)
Robot melakukan tindakan untuk setiap baris seperti yang ditunjukkan sampai ayat telah diulang 5 kali.
Suatu tindakan dilakukan dengan menggambarkan robot menggunakan serangkaian karakter ASCII dan menunggu durasi yang ditentukan sebelum melakukan tindakan selanjutnya. Durasi suatu tindakan diukur dalam "ketukan". Durasi 1 beat adalah jumlah milidetik, B .
Robot pertama mulai melakukan tindakan untuk setiap baris ayat segera ketika teks baris ditampilkan.
Setiap robot berikutnya menunda memulai aksinya hingga waktu tertentu ( D ) setelah robot ke kanan (kiri Anda!) Memulai aksinya.
Penggambaran robot bervariasi oleh karakter ASCII yang mewakili "antena" robot, yang ada 5 jenis yang mungkin, didistribusikan secara acak setiap kali program dijalankan.
Setiap jenis antena harus digunakan oleh setidaknya satu robot, tetapi jenis yang sama tidak boleh muncul pada robot yang dipisahkan oleh kurang dari 3 robot lainnya. Jumlah kedua jenis antena dapat berbeda tidak lebih dari 1 (mis. 1xType_4 dan 3xType_5's ilegal sejak 3-1> 1)
Ayat dan Tindakan
Seluruh ayat diulangi 5 kali, 1 baris sekaligus ...
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
Untuk setiap pengulangan (R) dari ayat tersebut, gantikan? dan ?? ...
R ?= ??=
-- ----------- ---
1. right foot RF
2. left foot LF
3. right hand RH
4. left hand LH
5. whole self WS
Tindakan dan pola ASCII
Setiap tindakan berlabel diwakili oleh 5 baris 8 simbol ASCII.
Representasi dari setiap tindakan adalah sebagai berikut ...
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__/
Di baris 1, ganti "1-4" dengan simbol yang sesuai untuk setiap jenis antena ...
1 | 1234 1234 1234 1234 1234
| \/\/ |┌┐| )||( |||| ┐/\┌ <-- Symbols 1-4 for...
| 1 2 3 4 5 <-- ...antenna types 1-5
Keluaran
Seluruh adegan harus diberikan setidaknya sekali segera setiap kali konten adegan berubah dengan cara apa pun. (Yaitu dengan asumsi keterlambatan antara tindakan robot adalah> 0, output dapat diberikan tidak kurang dari N kali per tindakan.)
Idealnya, untuk animasi konsol atau area output yang setara dihapus sebelum setiap pembaruan diberikan. Untuk menyediakan bahasa yang tidak dapat menghapus konsol, output juga dapat dirender dalam aliran berkelanjutan, tunduk pada persyaratan yang sama yang dijelaskan di atas.
Mencetak gol
Pemenang adalah program terpendek dalam setiap bahasa, serta keseluruhan terpendek.
Pengecualian 1 Karena membersihkan konsol setiap render lebih disukai meskipun tidak diperlukan, byte yang digunakan khusus untuk tujuan mewah ini tidak diperhitungkan terhadap total byte. Ini termasuk perintah untuk menghapus konsol, dan padding output dengan garis kosong untuk menggulir konten konsol keluar dari pandangan.
Pengecualian 2 CSS atau sarana yang secara efektif serupa digunakan secara eksklusif untuk tujuan menata keluaran di luar persyaratan minimum tidak diperhitungkan terhadap total byte. Misalnya *{color:blue;text-align:center;}
dihitung hanya 32-10 = 22 byte karena color:blue;
tidak berfungsi untuk memenuhi spesifikasi apa pun, sedangkan teks terpusat ditentukan.
Meta
Terinspirasi oleh (menunjukkan usia saya) TRS-80 Dancing Siluman , Android Nim , dan tentu saja Busby Berkeley (dan tidak, aku tidak yang lama).