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).
Jawaban:
Hadirin sekalian, silakan sambut kami yang cantik
Full Frontend-Stack Dance Group, 1.320
1.3781.4251.495byteJavaScript: 1,195 byte | CSS: 103 bytes | HTML: 22 byte
Ini tantangan yang lucu. Ini juga memiliki banyak kasus khusus. Oh nak, banyak sekali kasus khusus. Dan antena-antena itu ...
Ini akan berjalan selamanya dan memulai kembali setelah semua tindakan (
left foot
,right foot
dll.) Selesai.Anda dapat mencobanya di jsFiddle atau menggunakan potongan kode di bawah ini:
Diuji di Chrome dan Firefox di macOS, Windows 10 dan Ubuntu
Suntingan
createElement
dan menghapus akses lama.firstChild
.getElementById
. Ini juga membuat caching yangdocument
tidak perlu.||
dan&&
dengan bitwise&
dan|
. Terima kasih kepada TheLethalCoder .sumber
||
dan&&
ke|
dan&
?C #, 1188
13761382byte setelah pengecualianKompak:
Format yang sedikit lebih bagus dan dibungkus dengan program yang dapat dieksekusi:
Cobalah online!
mono main.exe 8 400 40
Edit 1
Digantikan
string.Format(i,j)
dengani.Replace("?",j)
penghematan 6 byte secara keseluruhan.Edit 2
Lengkap perbaiki dengan saran dari komentar.
sumber
c
untuk penghematan kecil. Saya tahu saya lupa cara yang lebih baik daripadanew string(c,n)
. Namun, sekarang saya sudah aliasS=String
,new S(c,n)
masih lebih pendek.JavaScript, 948 bytes
Mungkin bentuk yang buruk untuk menjawab pertanyaan Anda sendiri, tetapi ...
Mencoba segala macam cara untuk mengompres teks, tetapi sebagian besar berakhir lebih lama dari aslinya dengan algoritma + kunci disertakan. Saya yakin masih ada cara yang lebih optimal untuk mengompres semuanya, tetapi saya harus menggambar garis di suatu tempat.
Menariknya, pencarian menghasilkan satu atau dua ide untuk beberapa tantangan lain yang mungkin saya saring dan posting nanti.
( NB: Berisi beberapa karakter dalam kisaran 1-31 yang representasinya agak aneh ketika diposting di sini)
Tonton siklus tarian psikedelik penuh di CodePen !
sumber