Ini labu ASCII yang diukir menjadi Jack-o-Lantern. Bukankah itu lucu?
((^v^))
Ini hantu ASCII. Lihat betapa seramnya itu!
\{O.O}/
Jelas, labu harus berada di tanah, dengan ruang di antara mereka sehingga tidak membusuk.
Hantu, bagaimanapun, suka berdiri di atas labu, jadi mereka bahkan lebih menakutkan . Namun, mereka harus berdiri di atas dua labu, jika tidak, berat hantu mereka akan menghancurkan labu di bawah mereka. Tetapi, karena cara sihir hantu mereka bekerja, banyak hantu dapat menumpuk dan berbagi labu, asalkan hantu itu terbagi rata pada labu yang lebih rendah atau hantu yang lebih rendah. Dengan kata lain, membentuk bentuk seperti piramida manusia . Perhatikan bahwa hantu tidak bisa menumpuk pada hantu kecuali ada labu di bawahnya (begitulah cara kerjanya).
Diberi dua bilangan bulat non-negatif, g
dan p
, mewakili jumlah g
host danp
umpkins, menghasilkan formasi paling kiri paling kompak, mengikuti aturan susunan piramida di atas. Labu dan hantu sisa (yaitu, mereka yang tidak membentuk piramida) pergi ke tanah ke kanan.
Untuk klarifikasi, formasi ini OK (dipisahkan baris baru kosong), dan berfungsi sebagai contoh I / O:
0p 1g
\{O.O}/
1p 0g
((^v^))
1p 1g
((^v^)) \{O.O}/
2p 1g
\{O.O}/
((^v^)) ((^v^))
2p 2g
\{O.O}/
((^v^)) ((^v^)) \{O.O}/
3p 1g
\{O.O}/
((^v^)) ((^v^)) ((^v^))
3p 2g
\{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^))
3p 3g
\{O.O}/
\{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^))
0p 4g
\{O.O}/ \{O.O}/ \{O.O}/ \{O.O}/
3p 0g
((^v^)) ((^v^)) ((^v^))
7p 6g
\{O.O}/
\{O.O}/ \{O.O}/
\{O.O}/ \{O.O}/ \{O.O}/
((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^)) ((^v^))
Formasi ini Tidak Baik
\{O.O}/
((^v^))
\{O.O}/
((^v^))
((^v^)) ((^v^)) \{O.O}/
\{O.O}/
\{O.O}/
((^v^)) ((^v^))
\{O.O}/
\{O.O}/ ((^v^)) ((^v^))
((^v^))
((^v^)) ((^v^))
\{O.O}/
((^v^)) ((^v^))
Memasukkan
Dua bilangan bulat non-negatif dalam format apa pun yang nyaman . Setidaknya salah satu angka akan menjadi nol. Anda dapat mengambil input dalam urutan mana pun (mis., Dalam contoh yang saya miliki labu dulu) - harap tentukan bagaimana Anda mengambil input dalam jawaban Anda.
Keluaran
Representasi ASCII-art dari hantu dan labu, mengikuti aturan di atas. Leading / trailing newlines atau spasi putih lainnya adalah opsional, asalkan hantu dan labu berbaris dengan tepat.
Aturan
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
Jawaban:
JavaScript (ES7),
166164159 byteDisimpan 5 byte berkat Neil
Diformat dan dikomentari
Matematika yang mendasari
Bagian yang sulit adalah untuk mengetahui lebar optimal
G
piramida hantu.Jumlah hantu
g
dalam piramida tersebut diberikan oleh:Timbal balik, lebar piramida yang mengandung
g
hantu adalah akar nyata dari persamaan kuadratik yang dihasilkan:Yang mengarah ke root asli berikut (juga dikenal sebagai root triangular ):
Namun, lebar piramida juga dibatasi oleh jumlah labu: kita dapat memiliki tidak lebih dari
p-1
hantu di atasp
labu. Oleh karena itu rumus akhir yang digunakan dalam kode:Versi ES6,
173171166 byteTest case (ES6)
Tampilkan cuplikan kode
sumber
j=(g+g)**.5+.5|0
harus bekerja.Perl, 246 byte (baris baru bukan bagian dari kode dan disediakan hanya untuk dibaca)
Menerima dua angka: labu pertama, diikuti oleh hantu. Input sampel:
Output sampel:
sumber
0p 4g
test case memiliki semua hantu dalam satu baris, bukannya ditumpuk.