Cetak blok menara dengan kode sesingkat mungkin.
Memasukkan:
Input menentukan berapa lantai yang dimiliki oleh blok menara. Satu lantai berisi jendela di kedua sisi pintu. Jendela terdiri dari hash 3x3.
Contoh blok menara 4 lantai di bawah ini:
=====================
)V V V V V V V V V V(
)V V V V V V V V V V V(
)V V V V V V V V V V V V(
)V V V V V V V V V V V V V(
~~~~~~~~~~~~~~~~~~~~~~~~~~~
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : : : : : : : : : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : ### : : : : : : ### : :
: : : : : : : : : : : : : :
: : : : : _______ : : : : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : ### : I I : ### : :
: : : : : I I : : : : :
Memperbarui:
Masukan harus satu atau lebih besar.
Ruang tambahan di ujung garis diperbolehkan.
Dalam contoh saya, setiap baris memiliki tiga spasi utama. Ini tidak wajib, hanya blok menara dengan inputnya.
Jawaban:
V , 72 byte
Cobalah online!
Ini hexdump, karena ini mengandung karakter yang tidak patut dicetak:
Saya menemukan bug yang aneh. Bagian di tengah:
dGÀpG
seharusnya:,ÀäGG
tetapi ini tidak berfungsi untuk input 1, dan saya tidak tahu mengapa.¯\_(ツ)_/¯
sumber
Mathematica,
301288258 byteFungsi murni yang mengambil bilangan bulat positif dan menghasilkan string. String output tidak akan terlihat benar karena Mathematica tampaknya tidak menampilkan font monospace sebagai monospace:
Untuk alasan yang saya tidak mengerti, itu memformat sebagai monospace jika Anda
Print
string:Sunting: Disimpan beberapa byte dengan tidak termasuk
" "
di awal setiap baris. Mengubah definisis
menangani kasus di mana hanya ada satu lantai (StringRepeat
tidak suka mengulang0
kali string ).Edit 2: Berkat LegionMammal978 dan fakta bahwa
StringJoin
adalahListable
, ini sekarang mimpi buruk dimengerti dari daftar bersarang dan juga 30 byte lebih pendek.sumber
a<>b<>...<>x
dengana<>{b,...,x}
di bagian-bagian tertentu.Python 2 ,
275270262246240236 byteMenyimpan pasangan dengan petunjuk dari @ Flp.Tkc dan dengan mengubah yang pertama untuk loop.
16 disimpan dengan bantuan lebih lanjut dari @ Flp.Tkc
Cobalah online!
Hanya membangun setiap baris menara sebagai string dan menambahkannya ke array mereka mencetak array di akhir. Jika ada yang menginginkan penjelasan lengkap saya dengan enggan akan memberikan jika saya bisa mengingat cara kerjanya ☺
sumber
PowerShell , 193 byte
Cobalah online!
(Saya merasa mungkin masih ada beberapa byte di sini atau di sana. Sub-190 tampaknya bisa dilakukan.)
Tiga baris pertama membentuk atap, menggunakan perkalian dan penggabungan string, bersama dengan lingkaran
3..0|%{...}
untuk mendapatkan angka dan kemiringan yang benar.V
s.Garis berjalan berikutnya dari input pra-dikurangi
--$args[0]
ke0
sebagai loop (pra-pengurangan memungkinkan kita untuk indeks menggunakan!$_
bukannya$_-eq1
menyimpan beberapa byte kemudian). Setiap iterasi loop, kami membangun sekelompok string, variabel pengaturan$b
dan di$a
sepanjang jalan. Kami juga menggunakan pseudo-ternaries(... , ...)[...]
untuk memilih string yang tepat untuk bagian tengah sehingga kami bisa mendapatkan pintu di lantai pertama dengan benar.Setiap string dibiarkan secara terpisah pada pipeline, dan default
Write-Output
menyisipkan baris baru di antara, jadi kami mendapatkannya secara gratis.sumber
T-SQL,
378372353331325 byteGolf:
Tidak Terkumpul:
Cobalah
sumber
C,
409406402 byteTelepon dengan:
sumber
Batch, 373 byte
Buat punggungan dan selokan dengan memperhatikan bahwa mereka adalah kelipatan 3, yang memangkas beberapa byte. Bangun atap dengan memperhatikan bahwa sufiks sama untuk setiap baris (dan sekali lagi termasuk beberapa pengulangan tiga kali lipat). Bangun dinding dengan memulai dengan garis dinding yang paling menarik, yaitu jendela lantai dasar, dan menghapus detail untuk menghasilkan bagian lain dari dinding.
sumber
Javascript, 335 byte
Membuat fungsi
y()
dengan argumenz
, sehinggay(z)
menghasilkan output yang diinginkan.Contoh penggunaan:
Saya beralih dari JavaScript normal ke kode-golf JS. Setiap tips akan sangat dihargai.
sumber
Kanvas ,
6261 byteCoba di sini! Input 0 berfungsi seperti yang diharapkan meskipun itu tidak diperlukan.
sumber