Anda mungkin pernah melihat Tangga Yakub di museum sains anak-anak. Jika Anda tidak terbiasa dengan tampilannya, ada beberapa gambar dan contoh video di Wikimedia Commons . Tantangannya hari ini adalah membuat versi animasi ASCII dari gadget listrik. Pada akhirnya, akan terlihat seperti ini:
Konstruksi Tangga
Berikut adalah bentuk dasar tangga dengan tinggi ( H ) 6:
6 \ /
5 \ /
4 \ /
3 \ /
2 \ /
1 \ /
0 ¯¯
Angka-angka di sebelah kiri hanya menunjukkan nomor baris untuk contoh ini dan tidak boleh dimasukkan dalam output. Kami akan merujuk ke baris yang diberikan oleh angka ( R ). Baris 0 adalah bagian bawah ¯¯
. Setiap baris 1 hingga H terdiri dari empat bagian:
- Ruang
(U + 0020) diulang ( H - R ) kali
- Garis miring
\
(U + 005C) - Ruang
(U + 0020) diulang (2 * R ) kali
- Garis miring ke depan
/
(U + 002F)
Baris 0 identik kecuali kedua garis miring diganti dengan macron ¯
(U + 00AF). Mengejar spasi putih pada akhir setiap baris atau di bawah tangga adalah OK. Ruang putih terkemuka tidak.
Konstruksi busur
Setelah tangga dibangun, Anda dapat membuat busur antara sisi kiri dan kanan. Satu busur sepenuhnya dalam satu baris dan menggantikan ruang antara yang memimpin \
dan yang tertinggal /
. Oleh karena itu, baris 2 akan memiliki 4 karakter di busurnya, baris 3 akan memiliki 6, dan seterusnya. Setiap busur disusun menggunakan aturan berikut:
- Satu-satunya karakter yang diizinkan adalah
_/¯\
(U + 005F, U + 002F, U + 00AF, U + 005C) - Untuk memastikan penampilan yang halus, setiap
¯
atau/
harus diikuti oleh¯
atau\
- Untuk memastikan penampilan yang halus, setiap
_
atau\
harus diikuti oleh_
atau/
- Dua aturan di atas berlaku untuk tepi tangga juga
- Tiga aturan di atas secara efektif berarti bahwa karakter pertama dalam arc harus
_
atau/
dan karakter terakhir harus_
atau\
(\¯\_//
tidak valid pada kedua ujungnya tetapi\_/¯\/
OK) - Harus ada peluang tidak nol untuk setiap karakter yang diizinkan terjadi pada titik tertentu
- Setiap busur independen dari setiap busur lainnya
Animasi
Kehidupan busur tunggal dibuat dengan memulainya di baris 1 dan "memindahkannya" satu baris pada satu waktu hingga mencapai puncak. Yaitu, pertama menghasilkan busur di baris 1, kemudian mengaturnya kembali ke spasi dan menghasilkan busur di baris 2, dan seterusnya. Diberikan sejumlah busur untuk ditampilkan ( N ), perlihatkan umur lengkap dari banyak busur itu satu per satu menggunakan pedoman berikut:
- Hanya satu busur yang harus "hidup" pada satu waktu. Busur berikutnya tidak dapat mulai sampai busur saat ini mencapai puncak dan kemudian padam.
- Setiap baris kehidupan busur harus ditampilkan tepat satu frame
- Seharusnya ada satu bingkai hanya tangga dasar (tanpa busur) sebelum busur baru dimulai (opsional sebelum busur pertama)
- Animasi harus menunjukkan kehidupan penuh busur N. Jika N = 0, itu harus menghidupkan busur acak selamanya sampai berhenti.
- Jika N > 0, Anda masih dapat mengulang animasi untuk selamanya tetapi harus berupa loop dengan busur yang sama berulang kali. (Contoh GIF di bagian atas posting ini memiliki H = 6 dan N = 3 tetapi berulang selamanya.)
- Animasi harus ada di tempat. Artinya, setiap frame harus sepenuhnya menimpa frame berikutnya dan berada di lokasi yang sama.
- Panjang setiap frame bisa menjadi apa pun yang Anda inginkan tetapi membuatnya ditonton oleh manusia (yaitu, gunakan akal sehat Anda: 0,01s / frame dan 30s / frame keduanya tidak dapat diterima.)
Input output
- Input dan Output dapat dalam format standar apa pun
- Anda dapat mengekspor GIF, menulis teks ke layar, mengeluarkan satu file untuk setiap frame, atau cara lain yang masuk akal
- Celah standar dilarang
- Ketinggian tangga H akan menjadi bilangan bulat positif
- Jumlah busur untuk menunjukkan N akan menjadi bilangan bulat non-negatif
- Baik H dan N diambil sebagai input dalam urutan apa pun yang Anda pilih (Harap sertakan urutan dalam jawaban Anda)
Kondisi Menang
Ini adalah kode-golf sehingga kode terpendek menang.
the first character in the arc must be _ or / and the last character must be _ or \
dan There must be a non-zero chance for each allowable character to occur at a given point
. Agar simetris, karakter pertama dan terakhir harus _
setiap waktu yang berarti tidak ada peluang untuk terjadi /
atau `\`.