pengantar
Cacti tersedia dalam berbagai ukuran, bentuk dan warna. Namun, kaktus yang paling ikonik dan harus dimiliki di setiap negara Barat haruslah saguaro . Fitur penting adalah ukuran dan lengannya, yang telah menentukan penampilan kaktus stereotip.
Tugas Anda adalah membawa saguaro di dunia ASCII. Namun, - seperti di dunia nyata - tidak ada saguaro seperti yang lain, sehingga program Anda harus dapat menghasilkan saguaros dengan berbagai konfigurasi lengan.
Contoh saguaro
- Input:
[0b10, 0b11]
([2, 3]
dalam desimal, panjang input2
)
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
Spesifikasi
Saguaro selalu memiliki dasar dan puncak, dengan jumlah variabel batang di antaranya. Bagian batang tidak memiliki lengan, lengan di kanan, satu di kiri atau dua lengan.
Pola pertumbuhan Saguaro diberikan sebagai daftar input yang berisi nilai dua-bit. 00
berarti tidak ada lengan, 01
lengan di sebelah kanan, 10
lengan di sebelah kiri dan 11
dua lengan (semuanya dalam biner). Panjang daftar input menentukan tinggi saguaro.
Bagian Saguaro terlihat seperti berikut. Bagian kaktus dikelilingi oleh octothorps #
, untuk kejelasan yang tidak akan dicetak.
Tinggi saguaro selalu sama dengan 4+6*k
karakter untuk bilangan bulat tidak negatif k
.
#############
# _ # Saguaro top
# / \ #
#############
# _ | | _ # Stem, both arms
#/ \ | | / \# Stem id: 11
#| | | | | |#
#\ \_| |_/ /#
# \__ __/ #
# \ / #
#############
# _ | | # Stem, left arm
#/ \ | | # Stem id: 10
#| | | | #
#\ \_| | #
# \__ | #
# \ | #
#############
# | | _ # Stem, right arm
# | | / \# Stem id: 01
# | | | |#
# | |_/ /#
# | __/ #
# | / #
#############
# | | # Stem, no arms
# | | # Stem id: 00
# | | #
# | | #
# | | #
# | | #
#############
# | | # Saguaro base
# | | #
#############
Memasukkan
Seperti yang dikatakan sebelumnya, input terdiri dari daftar nilai dua-bit ( 0, 1, 2, 3
dalam desimal). Itu dapat diberikan dalam format apa pun yang masuk akal. Elemen pertama daftar sesuai dengan bagian batang tertinggi saguaro, elemen kedua ke bagian batang tertinggi kedua, dll.
Jika Anda mau, Anda bisa memerlukan panjang daftar input sebagai input tambahan. Silakan tentukan dalam jawaban Anda jika Anda melakukannya.
Keluaran
Saguaro ASCII keluaran Anda harus dibangun menggunakan bagian-bagian batang yang tepat seperti dijelaskan di atas. Mengejar ruang pada garis dan mengikuti garis baru diabaikan; Anda dapat mencetak lebih banyak, lebih sedikit atau sebanyak yang ditentukan di atas.
Aturan
- Celah standar berlaku
- Dengan kode-golf ini , jumlah byte program harus minimal
Uji kasus
- Pencilan. Memasukkan:
[0b01, 0b00, 0b01, 0b11]
_
/ \
| | _
| | / \
| | | |
| |_/ /
| __/
| /
| |
| |
| |
| |
| |
| |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Lengan bergantian. Memasukkan:
[0b10, 0b01, 0b10]
_
/ \
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| | _
| | / \
| | | |
| |_/ /
| __/
| /
_ | |
/ \ | |
| | | |
\ \_| |
\__ |
\ |
| |
| |
- Banyaknya senjata. Memasukkan:
[0b11, 0b11]
_
/ \
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
_ | | _
/ \ | | / \
| | | | | |
\ \_| |_/ /
\__ __/
\ /
| |
| |
- Tanpa lengan, juga dikenal sebagai tombak. Memasukkan:
[0b00]
_
/ \
| |
| |
| |
| |
| |
| |
| |
| |
- Tidak ada tubuh, beberapa menyebutnya kaktus muda. Memasukkan:
[]
_
/ \
| |
| |
sumber
4 1 0 1 3
Jawaban:
Arang ,
5049 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Gambarlah bagian atas.
Lingkarkan di setiap sisi.
Lompat ke tepat di bawah sisi kanan atas.
Lingkari setiap bagian batang.
Uji apakah ada lengan.
Jika demikian cetak lengan.
Kalau tidak, cukup cetak garis vertikal.
Setelah mencetak batang, cetak alasnya.
Pantulkan siap untuk menggambar sisi lain. Setelah kedua sisi ditarik, kedua sisi kemudian dipantulkan kembali ke posisi akhir mereka.
sumber
JavaScript (ES6), 210 byte
Saya menghabiskan terlalu lama untuk solusi lain sebelum menyadari ada cara yang lebih baik, yang tidak meninggalkan saya waktu sebanyak yang saya suka untuk mengerjakan ini.
Cobalah
sumber
00,01,10,11
sebagai input, bukan input biner atau0,1,2,3
. menggunakan OP test cases ini gagal.Python 2 , 189 byte
Cobalah online!
sumber
Python 2 ,
256253 ... 205203199 byteCobalah online!
sumber
for ...:\n r...\n r...
->for ...:r...;r...
menghemat tiga byte.PowerShell , 235 byte
Cobalah online!
PowerShell tidak memiliki
map
atauzip
atau cara yang sangat mudah untuk membalikkan string, jadi kita pergi dengan sesuatu yang lain - penggantian sederhana bagian berulang.Dua baris pertama mengambil input sebagai array bilangan bulat dan menampilkan bagian atas kaktus. Kemudian kita loop through
$a
dan memilih ke dalam array empat string berdasarkan pada nilai saat ini. Senar-senar itu tertinggal di pipa dan kemudian kita gunakan-replace
untuk mengisi tempat yang sesuai. Kami kemudian meletakkan bagian bawah kaktus ke dalam pipa juga.Semuanya dikumpulkan dari pipeline dan sebuah implisit
Write-Output
terjadi pada penyelesaian program, menyisipkan baris baru di antara setiap elemen.sumber
05AB1E ,
7675 byteCobalah online!
sumber
Java (OpenJDK 8) ,
626566499466398312310308 byteDapat bermain golf satu ton
Cobalah online!
sumber
{j=e>1;k=e%2>0;n+=(k?" _ |":g)+(j?" | _,":r)+
ken+=((k=e%2>0)?" _ |":g)+((j=e>1)?" | _,":r)+
dan menghapus penutupan}
dari untuk loop juga.1
dan2
.SOGL V0.12 ,
565453 byteCoba Di Sini!
Penjelasan:
sumber