Piramida Maya (dan) adalah bagian penting dari arsitektur kuno, yang umumnya digunakan untuk tujuan keagamaan.
Mereka biasanya menginjak piramida, tetapi tangga di masing-masing terlalu curam untuk didaki. Para pendeta akan naik ke puncak mereka melalui tangga alternatif untuk melakukan upacara. Piramida juga digunakan sebagai landmark karena tingginya, dan kadang-kadang bahkan digunakan sebagai situs pemakaman bagi pejabat tinggi.
Tantangan
Tulis program yang dapat mencetak skema piramida berdasarkan spesifikasi pengguna (lihat di bawah).
Persyaratan
Ambil input dari dua variabel yang dipisahkan ruang.
Masukan harus diterima melalui STDIN (atau alternatif terdekat).
Output harus melalui STDOUT (atau alternatif terdekat).
Memasukkan
Tinggi sebagai bilangan bulat positif. Ini digunakan sebagai lebar level dasar (dalam blok). Setiap level berikutnya dari piramida memiliki lebar di
n - 1
mana lebarn
lantai sebelumnya (dalam blok).Ukuran blok yang akan menjadi 1 atau aneh, bilangan bulat positif ≤ (kurang dari) 10.
Blok
Ukuran blok yang diberikan menentukan lebar (dan tinggi) dari masing-masing bagian. Pada dasarnya, ada i^2
ruang di dalam kotak yang terlihat di mana i
ukuran blok.
Blok 1x1 akan terlihat seperti ini:
+++
| |
+++
Sedangkan blok 5x5 akan terlihat seperti ini:
+++++++
| |
| |
| |
| |
| |
+++++++
Blok Berdampingan Secara Horizontal
Blok berdampingan secara horizontal harus memiliki dinding tengahnya digabung menjadi satu.
Anda harus memiliki ini:
+++++
| | |
+++++
Alih-alih sesuatu seperti ini:
++++++
| || |
++++++
Blok Berdekatan Vertikal (-5% bonus)
Blok berdampingan secara vertikal memiliki pengecualian khusus: dinding tengah dapat digabung menjadi satu.
Jadi, bukannya 1x1 blok yang terlihat seperti ini:
+++
| |
+++
+++++
| | |
+++++
Mereka bisa terlihat seperti ini:
+++
| |
+++++
| | |
+++++
Contohnya
Input: 3 1
Output:
+++
| |
+++
+++++
| | |
+++++
+++++++
| | | |
+++++++
OR
+++
| |
+++++
| | |
+++++++
| | | |
+++++++
Input: 2 3
Output:
+++++
| |
| |
| |
+++++
+++++++++
| | |
| | |
| | |
+++++++++
OR
+++++
| |
| |
| |
+++++++++
| | |
| | |
| | |
+++++++++
Papan angka
Untuk diperingkatkan di papan skor, tulis jawaban Anda dalam format ini:
# Language, Score
Atau jika Anda mendapat bonus -5%:
# Language, Score (Bytes - 5%)
Skor Anda hanya angka keseluruhan. Jika skor Anda adalah desimal, bulatkan ke seluruh angka.
1 1
?3 2
dihasilkan input ?2 3
, itu akan keluar ketika din - 1 = 0
manan
lebar lantai sebelumnya dalam balok.Jawaban:
Pyth, 45 (47 byte - 5%)
Cobalah di sini .
sumber
JavaScript (ES6), 161 (169-5%)
166 (174-5%)Menggunakan string template, 2 baris baru itu penting dan dihitung.
Tes menjalankan cuplikan di bawah ini di browser EcmaScript 6. Firefox ok, bukan Chrome karena tidak memiliki dukungan untuk penataan yang merusak .
Kode dijelaskan setelah cuplikan.
Kurang Golf
sumber
Ruby, 124 (130 - 5%)
Dengan komentar
sumber
Python 2, 117 (123 byte)
Idenya adalah untuk membangun atas batu bata
p
sebagai+++++++++
dan sisiv
sebagai| | |
. Bagian atas dimulai sebagai+
dan ditambah olehn+1
+
setiap lapisan. Sisi dimulai sebagai|
dan ditambah olehn
spasi dan a|
. Setiap lapisan, kami menambah bagian atas dan samping, lalu mencetak satu bagian atas dann
sisi.Untuk memusatkannya, pertama-tama kita mencetak indentasi
l
. Ini terdiri dari sejumlah ruang yang bersisik dengan ketinggian saat inih
. Untuk memperbaruinya, kami mengurangi variabel ketinggianh
hingga menyentuh0
, setelah itu lapisan saat ini rata terhadap tepi kiri layar. Kami mencetak bagian atas sekali lagi untuk membuat lapisan bawah, dan kami selesai.sumber
Python 2, 200 (210 - 5%)
Saya menggunakan perkalian string dan membuka spasi ekstra.
sumber