Anda perlu membangun piramida dari kubus. Kubus dapat dilihat dari 2 sudut:
_____ _____
/\ \ / /\
/ \____\ /____/ \
\ / / \ \ /
\/____/ \____\/
Ini adalah contoh untuk 2 kubus ukuran dari 2 sudut yang memungkinkan. Ketinggian kubus adalah $size
garis miring (atau garis miring), dan lebar kubus adalah 2 * $size
garis bawah. Lebar tingkat atas harus berisi karakter garis bawah ekstra.
Input akan diberikan sebagai string yang berisi angka (ukuran kubus), garis miring atau garis miring terbalik (untuk menunjukkan arah / sudut), dan angka lain (ketinggian piramida).
Contoh:
Memasukkan:
1/1
Keluaran:
___
/\__\
\/__/
Memasukkan:
1\1
Keluaran:
___
/__/\
\__\/
Memasukkan:
2/1
Keluaran:
_____
/\ \
/ \____\
\ / /
\/____/
Memasukkan:
1/2
Keluaran:
___
___/\__\
/\__\/__/
\/__/\__\
\/__/
Memasukkan:
2\2
Keluaran:
_____
/ /\
/____/ \_____
\ \ / /\
\____\/____/ \
/ /\ \ /
/____/ \____\/
\ \ /
\____\/
Memasukkan:
1/3
Keluaran:
___
___/\__\
___/\__\/__/
/\__\/__/\__\
\/__/\__\/__/
\/__/\__\
\/__/
- Trailing / spasi putih terkemuka tidak masalah.
- Celah standar tidak diijinkan.
- Anda dapat berasumsi bahwa input akan selalu valid.
- Anda dapat mengasumsikan input tidak akan menyebabkan output terlalu besar, yaitu: tidak ada pembungkus garis ketika output dicetak ke terminal.
- Ukuran kubus & tinggi piramida positif (yaitu ≥ 1)
- Ini adalah kode-golf, jadi kode terpendek dalam byte menang.
Pemenang saat ini adalah:
Glen O dengan 270 byte di julia
tantangan tetap terbuka. jika Anda mengalahkan yang terbaik saat ini, saya akan memperbarui jawaban yang diterima.
Jawaban:
Julia -
503455369346313270 bytesTidak Terkumpul:
Pemakaian:
atau
sumber
Perl, 343 byte
Multiline dengan komentar:
Contoh output:
Saya juga mencoba mengimplementasikannya sebagai fungsi C menggunakan algoritma yang sama, berharap untuk menyimpan byte dari kemewahan nama variabel karakter tunggal, tetapi akhirnya menjadi 15 byte lebih besar, pada 358 byte (perlu dikompilasi dengan di
-std=c89
bawah gcc untuk meninggalkan yangvoid
di header fungsi):sumber
printf("%c" --> putchar(
,printf("\n") --> puts("")
, memindahkan semua deklarasi int luar fungsi, maka Anda dapat menghilangkanint
(lihat meta.codegolf.stackexchange.com/q/5532/15599 ), ubah semua literal karakter untuk kode ascii mereka mis' ' --> 32
. Refactoring untuk loop Anda misalnyafor(k+1;z--;)
juga bisa membantu tetapi lebih rumit.e
bisa menjadi int asalkan Anda menginisialisasi ke nol.sscanf
hanya akan menimpa byte paling signifikan dan dapat meninggalkan sampah yang ada di tiga byte lainnya.main
alih-alihj
tetapi Anda tidak harus melewati parameters
, dan Anda dapat memanfaatkan inisialisasi otomatis variabel global.Ruby, 332
Satu-satunya golf yang dilakukan sejauh ini adalah penghapusan komentar dan indentasi. Saya akan bermain golf nanti.
Saya mengatur array spasi dan memasukkan karakter individu ke dalamnya. Ada cukup banyak overdrawing dari satu kubus di atas yang lain (bekerja dari bawah ke atas) dan di dalam kubus itu sendiri, untuk menghindari kode tambahan. Saya membuat piramida dengan menggambar belah ketupat (mirip dengan /codegolf//a/54297/15599 ) dan melampaui bagian atas.
Bagian yang sulit adalah menggambar kubus yang bisa diukur. Saya mulai dengan segi enam perimeter dengan 2n +1
_
karakter di sisi horizontal. Saya juga punya 2n +1/
dan\
, jadi saya punya terlalu banyak, tetapi dengan merencanakan yang_
terakhir saya menimpa mereka.Garis internal adalah satu-satunya yang diubah tergantung pada arah yang dihadapi kubus. Saya memplot semua
/
dan\
dengan satu tugas.abs
membantu membalikkan arah, dani>>9&1
menambahkan 1 ekstra ke nilai negatif i, yang menurunkan bagian atas ke bawah. untuki
= 0 salah satu yang diperlukan_
overplotted, sehingga string pemilih'\_/'
berisi ketiga simbol, dipilih sesuai dengan tandai
.Ruang kosong di sekitar output cukup tetapi tidak berlebihan: 4 * p * n tinggi dan 8 * p * n lebar (yang terakhir adalah untuk memungkinkan apex cube untuk selalu berada di pusat output.) Saya mengerti "trailing / leading spasi putih "untuk memasukkan seluruh baris, tetapi dapat merevisi jika perlu.
Kode tidak dikunci
sumber