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 \
danThere 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 `\`.0xAF
adalah»
.Jawaban:
Python 2 ,
287271270276275 byteCobalah online!
Tidak menghapus layar pada tio, tetapi bekerja di konsol.
Biarkan berjalan:
sumber
print'\n'*99
alih-alihos.system('cls')
dan kehilanganos
impor. Masih tidak berfungsi di TIO tetapi berfungsi di konsol Windows dan Linux.JavaScript (ES6), 245 byte
Hitungan byte mengasumsikan penyandian ISO-8859-1.
sumber
A=x=>[...Array(x)].map;
di awal dan mengganti kedua penggunaan.map
, itu hanya propertiArray.prototype
dan tidak ada gunanya sendiri. Saya mencoba versi yang berfungsi tetapi semuanya keluar lebih dari 245 byte.C (gcc) , 406 byte
Cobalah online!
Deskripsi:
sumber
\--/
. Itu mungkin perbaikan yang mudah. Apakah Anda dapat menangkap dan memposting GIF yang berfungsi di Xterm?PowerShell ,
347319 byteCobalah online!Tidak bisa
$args
bermain bagus, jadi tautannya memanggil fungsi tanpa membersihkan konsol.Tidak disatukan
sumber
$l=(($h..1)|%{"$(" "*($h-$_))\$(" "*$_*2)/"})+"$(" "*$h)¯¯"
for($x=0;$x-ne$n;$x++)
bisafor($x=0;$x++-ne$n;)
. Saya turun ke 324 byte (321 karakter) melakukannya. Tip untuk bermain golf di <semua bahasa> dan Tips untuk bermain golf di PowerShell mungkin menarik untuk dibaca juga.sleep 1
menghemat sedikit (default -seconds) tetapi cukup lambat tapi masih masuk akal-ish,sleep -m 99
cukup cepat tetapi juga masuk akal. Menghemat 5/1 byte tergantung pada apa yang Anda suka. Tidak memeriksa upaya Kevin tetapifunction
untukfilter
adalah byte gratis juga.Ruby , 293 byte
Cobalah online!
Saya di windows sehingga hanya mencetak banyak "\ n" untuk menghapus konsol. Membawa 2 argumen
n
danh
sebagai dua baris di stdin.sumber