Tantangan ini terinspirasi dari jawaban ini di Ask Ubuntu Stack Exchange.
Intro
Ingat screensaver Windows ME dengan pipanya ? Saatnya mengembalikan nostalgia!
Tantangan
Anda harus menulis program atau fungsi yang akan menampilkan representasi ASCII dari screensaver. Di screensaver harus ada satu pipa yang akan tumbuh ke arah semi-acak.
Awal pipa akan ditempatkan secara acak di salah satu perbatasan layar dan potongan pipa harus tegak lurus terhadap perbatasan (sudut pertama-pipa bisa horisontal atau vertikal). Setiap tik pipa akan tumbuh ke arah yang dihadapinya (horizontal / vertikal) pada 80%kesempatan atau mengambil sudut pada 20%kesempatan.
Representasi pipa
Untuk membuat pipa, 6 karakter unicode akan digunakan
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
Memasukkan
Program / fungsi akan mengambil 3 nilai input, yang dapat dikumpulkan melalui parameter fungsi atau diminta kepada pengguna.
- Jumlah kutu
- Lebar layar
- Tinggi layar
Jumlah kutu
Untuk setiap centang, sepotong pipa akan ditambahkan ke layar. Pipa akan menimpa potongan pipa lama jika mereka bertelur pada posisi yang sama.
Misalnya, ambil layar berukuran 3x3
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
Setiap kali pipa keluar dari layar, seperti pada contoh terakhir di 5 ticks, maka pipa baru akan muncul di perbatasan acak. Sebagai contoh:
ticks == 6
│┐
└┘
─
Pipa baru harus memiliki peluang 50% untuk horisontal atau vertikal.
Lebar layar / tinggi
Lebar dan tinggi layar dapat digabungkan menjadi satu nilai jika itu lebih disukai dalam bahasa pilihan Anda. Lebar dan tinggi layar akan selalu memiliki nilai minimum 1 dan nilai maksimum 255. Jika bahasa pilihan Anda mendukung layar konsol atau output yang lebih kecil dari karakter grid 255x255 maka Anda dapat mengasumsikan bahwa lebar dan tinggi akan jangan pernah melebihi batas konsol Anda. (Contoh: Jendela Windows 80x25 cmd)
Keluaran
Output dari program / fungsi Anda harus dicetak ke layar, atau dikembalikan dari suatu fungsi. Untuk setiap proses program Anda, set pipa yang berbeda harus dihasilkan.
Uji kasus
Kasus uji berikut adalah contoh acak dari output yang valid
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
Jelas, semakin banyak kutu yang terjadi, semakin sulit untuk membuktikan validitas program Anda. Karenanya, memposting gif dari output Anda yang berjalan akan lebih disukai. Jika ini tidak memungkinkan, silakan kirim versi kode Anda yang mencakup pencetakan output. Jelas, ini tidak akan dihitung dalam skor Anda.
Aturan
- Ini adalah kode-golf , jumlah byte terpendek yang menang
- Celah standar berlaku
- Jika Anda menggunakan karakter pipa unicode dalam kode sumber Anda, Anda dapat menghitungnya sebagai satu byte
Ini adalah tantangan yang cukup sulit yang mungkin dapat dipecahkan dengan banyak cara kreatif, Anda didorong untuk menulis jawaban dalam bahasa yang lebih verbal meskipun sudah ada jawaban dalam esolang pendek. Ini akan membuat katalog jawaban terpendek per bahasa. Bonus upvotes untuk gif berwarna mewah;)
Selamat bermain golf!
Penafian: Saya sadar bahwa karakter Unicode bukan ASCII, tetapi karena tidak memiliki nama yang lebih baik, saya hanya menyebutnya sebagai seni ASCII. Saran dipersilahkan :)



