Tulis program atau fungsi yang menggunakan daftar bilangan bulat kosong dalam format apa pun yang masuk akal seperti 4, 0, -1, -6, 2
atau [4 0 -1 -6 2]
.
Cetak atau kembalikan string yang menggambarkan daftar sebagai hutan seni ASCII di mana setiap angka menjadi pohon dengan tinggi proporsional. Setiap pohon membutuhkan empat kolom teks dalam output sebagai berikut:
Bilangan bulat positif N menjadi pohon dengan alas
__|_
dan puncaknya^
, dengan lapisan N/ \
di antaranya.Misalnya, ketika N = 1 pohonnya
^ / \ __|_
ketika N = 2 pohonnya adalah
^ / \ / \ __|_
ketika N = 3 pohonnya
^ / \ / \ / \ __|_
dan seterusnya.
Bilangan bulat negatif N menjadi seperti pohon positif yang sesuai kecuali bilah vertikal berada di antara garis miring cabang bukannya spasi.
Misalnya, ketika N = -1 pohonnya
^ /|\ __|_
ketika N = -2 pohonnya adalah
^ /|\ /|\ __|_
ketika N = -3 pohonnya adalah
^ /|\ /|\ /|\ __|_
dan seterusnya.
Ketika bilangan bulat adalah 0 secara teknis tidak ada pohon, hanya ruang kosong empat garis bawah:
____
Garis bawah pada dasar setiap pohon harus berbaris dalam output, yaitu semua pohon harus memiliki basis pada tingkat yang sama. Juga, satu garis bawah ditambahkan ke akhir garis garis bawah setelah pohon terakhir. Ini membuatnya begitu setiap pohon memiliki kolom kosong "udara" di kedua sisi itu.
Sebagai contoh, hasilnya 4 0 -1 -6 2
adalah
^
/|\
^ /|\
/ \ /|\
/ \ /|\ ^
/ \ ^ /|\ / \
/ \ /|\ /|\ / \
__|_______|___|___|__
Perhatikan bagaimana pola pohon selalu memiliki kolom ruang kosong terdepan tetapi garis bawah harus ditambahkan untuk menempel di sisi kanan pohon terakhir.
Juga:
- Ruang tambahan pada garis apa pun baik-baik saja, tetapi seharusnya tidak ada ruang utama yang tidak perlu.
- Baris baru terkemuka tidak diizinkan (pohon tertinggi harus menyentuh bagian atas kotak teks keluaran) dan hanya hingga satu baris tambahan yang dibolehkan.
- Daftar ini dapat berisi bilangan bulat mulai dari -250 hingga 250 inklusif. Menangani pohon yang lebih tinggi tidak diperlukan.
Kode terpendek dalam byte menang.
Lebih banyak contoh
3
:
^
/ \
/ \
/ \
__|__
-2
:
^
/|\
/|\
__|__
0
:
_____
0, 0
:
_________
0, 1, 0
:
^
/ \
______|______
0, -1, 2, -3, 4
:
^
^ / \
^ /|\ / \
^ / \ /|\ / \
/|\ / \ /|\ / \
______|___|___|___|__
sumber
_
(garis bawah) setelah pohon terakhir._
.Python 2, 165 byte
Ini adalah program lengkap yang menerima daftar sebagai masukan. Saya masih bermain golf kekacauan mengerikan ini.
sumber
PHP, 231
277byteTantangan ini memiliki hasil yang indah.
Membaca daftar yang dipisahkan koma (spasi putih opsional) dari
STDIN
:Tidak disatukan
Suntingan
if/else
dengan operator ternary dan memindahkan beberapa variabel sekitar untuk menghemat beberapa byte.sumber
Ruby,
157156153 karakterDitulis hanya karena awalnya
Array.transpose
terlihat seperti ide yang bagus. Tidak lagi.Contoh dijalankan:
sumber
C #, 318 byte
Saya mencoba transposing array. Saya tidak yakin apakah itu solusi terbaik.
Lekukan dan baris baru untuk kejelasan:
sumber