Tugas
Dalam tantangan ini, tugas Anda adalah menggambar representasi seni ASCII dari beberapa tumpukan kotak dengan tinggi yang meningkat. Anda diberikan sebagai masukan jumlah tumpukan, yang merupakan bilangan bulat positif. Tumpukan pertama berisi satu kotak ukuran 2x2
. Tumpukan kedua berisi 2 kotak ukuran 3x3
. Secara umum, k
tumpukan th berisi k
kotak ukuran (k+1)x(k+1)
.
Batas setiap kotak digambar menggunakan karakter -|+
, dan interiornya terdiri dari spasi putih. Kotak-kotak yang berdekatan berbagi batas, dan sudut harus selalu ditarik +
, bahkan ketika mereka merupakan bagian dari batas kotak lain.
Contohnya
Output untuk 1
:
++
++
Output untuk 2
:
+-+
| |
+-+
++ |
++-+
Output untuk 3
:
+--+
| |
| |
+--+
| |
+-+ |
| +--+
+-+ |
++ | |
++-+--+
Output untuk 5
:
+----+
| |
| |
| |
| |
+----+
| |
| |
| |
+---+ |
| +----+
| | |
| | |
+---+ |
| | |
| +----+
+--+ | |
| +---+ |
| | | |
+--+ | |
| | +----+
+-+ +---+ |
| +--+ | |
+-+ | | |
++ | | | |
++-+--+---+----+
Aturan dan Penilaian
Input dapat diterima dari STDIN, sebagai argumen baris perintah, atau sebagai argumen fungsi. Output harus pergi ke STDOUT atau setara terdekat. Setiap jumlah ruang trailing terbatas yang diperbolehkan, seperti yang mendahului dan mengikuti baris baru, tetapi tidak ada ruang tambahan sebelumnya.
Ini adalah kode-golf, sehingga jumlah byte terendah menang. Celah standar tidak diijinkan.
n
dann-1
relatif prima. Dua plus tidak akan pernah tumpang tindih.Integer.MaxValue
sebagai masukan.Integer.MaxValue
atau setara.Jawaban:
CJam,
64 6058 byteMembangun setiap kolom sekaligus.
Cobalah online di sini
sumber
Jawa (
407349 karakter)Beberapa karakter berkat @Zgarb dan @Geobits
Kode
Tidak yakin apakah ini optimal, tetapi ini adalah upaya pertama saya, saya mungkin akan mencoba memasukkannya ke dalam bahasa golf yang lebih baik nanti. Ada saran dipersilahkan!
Diperluas
Lihat disini.
sumber
&&
dan||
dengan&
dan|
. 2) Pindahkanint
deklarasi kefor
(for(int i=0,j,x,z;...
). 3) Anda memiliki satu kawat gigi terlalu banyak pada akhir fungsi golf Anda.a+1<=b+1
; mereka dapat digantikan oleha<=b
.q*q+1
mungkin hanya boleh ditugaskan ke variabel lain. Anda menggunakannya 9 kali atau lebih, dan Anda bisa menghemat banyak dengan mengatakana=q*q+1
sekali. Juga,q*(q+1)
adilq*q+q
.Python 2,
144128 byteSedikit memutar-mutar. Sedikit memutar-mutar di mana-mana.
sumber
Python, 188 byte
Secara matematis menghitung karakter di setiap
x,y
posisi. Itu sulit membuat+
cetakan di kedua sisi setiap kotak serta menghentikan bagian paling kanan+
dari apa yang akan menjadin+1
kotak.sumber
long
yang tidak memiliki batas atas.C # - 304 byte (fungsi)
atau 363 byte (kode lengkap)
Saya mencoba menghindari pernyataan if. Tidak Disatukan:
sumber
long
sebagai gantinya.Ruby (205 byte)
Mengambil nomor sebagai argumen baris perintah. Itu dimulai dengan baris baru yang gagal, tetapi itu dibolehkan.
sumber
JavaScript (ES6), 293 byte
Saya menjalankan ini di Firefox. Abaikan
"
penambahan konsol di antara string. Ini sebagian besar barang ES5 tapi saya akan mencoba bermain golf ini lebih banyak.Tidak dinegosiasikan / ES5
sumber
Python 2,
294290Saya membuatnya bekerja, tetapi saya masih perlu golf lebih banyak. Saya sangat senang, itu sulit (bagi saya, setidaknya)!
Saya mungkin akan menambahkan penjelasan nanti, kecuali segera jelas bagi seseorang ...? Aku agak meragukannya.
Coba di sini
sumber
Python - 243 byte
Menghasilkan semua kolom, menggantikan tumpang tindih pada kolom kecuali yang pertama. Lalu, bantalan dengan spasi, transpos, dan cetakan.
Saya sedang mempertimbangkan untuk menerjemahkan ke Pyth, tetapi saya akan membutuhkan pengganti untuk fungsi pad.
sumber