Dalam tantangan ini, Anda harus menampilkan seni ASCII balon air mengingat jumlah air yang diisi balon:
| __||__ |
| / # #\ |
| |######| |
| |######| |
| |######| |
| |######| |
| |######| |
| \######/ |
| |
| |
+----------+
Cara menggambar balon
Untuk menampilkan ukuran balon n
, ikuti langkah-langkah berikut (catatan: setiap kali simbol pembagian ( /
) digunakan, itu mewakili pembagian bilangan bulat, pembulatan ke bawah):
Gambar wadah yang terdiri dari sepuluh batang vertikal (
|
) di kiri dan kanan, sepuluh garis (-
) di bagian bawah, dan tanda tambah (+
) di sudut kiri bawah dan kanan bawah. Ini membuat semuanya menjadi 12x11, dan "dalam" 10x10.| | | | | | | | | | | | | | | | | | | | +----------+
Gambarlah dua batang vertikal (bukaan balon) yang berpusat di tengah baris atas, dengan
n/2
garis bawah (_
) di kedua sisi (untuk contoh ini,n
akan menjadi 5):| __||__ | | | | | | | | | | | | | | | | | | | +----------+
Gambar satu garis miring (
/
) dan garis miring terbalik (\
) di sekitar baris teratas ini, satu baris di bawah ini:| __||__ | | / \ | | | | | | | | | | | | | | | | | +----------+
Gambarlah
n
baris-baris garis vertikal yang identik secara spasial, dan kemudian satu baris sepasang garis miring terbalik dan garis miring:| __||__ | | / \ | | | | | | | | | | | | | | | | | | | | | | \ / | | | | | +----------+
"Isi" balon dengan air, yang diwakili oleh tanda pagar (
#
). Mulai dari baris paling bawah, dan naikkan ke atas. Jika satu baris tidak sepenuhnya terisi, Anda dapat menempatkan tanda pagar di mana pun Anda inginkan (dalam contoh di bawah, mereka ditempatkan secara acak, tetapi Anda dapat meletakkannya, katakanlah, semua di sisi kiri jika Anda mau).| __||__ | | / # #\ | | |######| | | |######| | | |######| | | |######| | | |######| | | \######/ | | | | | +----------+
Maksimal n
7, dan minimum adalah 0.
Memasukkan
Input akan berupa bilangan bulat i
, yang merupakan jumlah tanda pagar (air) yang harus ditarik.
Tidak akan pernah kurang dari 2, atau lebih besar dari 100.
Keluaran
Keluaran harus berupa balon ukuran yang n
mengandung i
tanda pagar (satuan air), di mana n
ukuran serendah mungkin yang dapat menampung i
satuan air. Karena i
akan selalu 2 atau lebih besar, n
akan selalu menjadi 0 atau lebih besar.
Ukuran maksimum balon yang bisa ditarik adalah n
= 7. Jika balon ukuran 7 tidak sesuai dengan jumlah air yang ditentukan, balon muncul:
| |
| |
|## # ###|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
|##########|
+----------+
(Yang di atas harus menjadi output untuk input i
= 76. Sama seperti balon yang tidak dicopot, enam unit tambahan air di baris atas dapat diatur sesuka Anda.)
Uji kasus
Mengapa memiliki satu test case, ketika Anda dapat memiliki semuanya ?
Berikut adalah GIF animasi dari semua input i
dari 2 hingga 100:
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Jawaban:
Oktaf, 523 byte
23 dari byte tersebut hanya untuk kasus n = 100. Mungkin seseorang dapat menyarankan cara yang lebih efisien ...
Uji
Input: 21
Keluaran:
sumber
Python 2, 591 byte
Butuh beberapa waktu dan mungkin bisa bermain golf lebih banyak.
Semoga tidak ada kesalahan besar.
Contoh dijalankan:
memberi:
sumber