Mengingat dua bilangan bulat positif, 'a' dan 'b', keluaran sebuah ascii-seni "kotak" yang merupakan karakter lebar dan b karakter tinggi. Misalnya, dengan '4' dan '6':
****
* *
* *
* *
* *
****
Sederhana bukan? Berikut ini twistnya: Batas kotak harus karakter "bergantian" dan "b". Ini dimulai di sudut kiri atas, dan berlanjut dalam spiral searah jarum jam. Misalnya, contoh sebelumnya dengan 4 dan 6 seharusnya
4646
6 4
4 6
6 4
4 6
6464
A dan B dapat berupa angka dua digit. Misalnya, input "10" dan "3" harus menampilkan ini:
1031031031
1 0
3013013013
Agar outputnya relatif kecil, Anda tidak harus mendukung tiga angka atau lebih. Juga, karena input dibatasi untuk bilangan bulat positif , '0' adalah input yang tidak valid, yang tidak harus Anda tangani.
Berikut adalah beberapa kasus uji lagi:
Input: (3, 5)
Output:
353
5 5
3 3
5 5
353
Input: (1, 1)
Output:
1
Input: (4, 4)
Output:
4444
4 4
4 4
4444
Input: (27, 1)
Output:
271271271271271271271271271
Input: (1, 17)
Output:
1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1
Input: (12, 34):
Output:
123412341234
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
432143214321
Anda dapat mengambil input dan output dalam format yang masuk akal, dan celah standar dilarang. Karena ini adalah kode-golf, jawaban tersingkat dalam byte menang!
a
1 apakah itu dinding kiri atau dinding kanan?Jawaban:
Pyth ,
6551 byteCobalah online!
sumber
C #, 301 byte
Saya yakin ada lebih banyak golf yang bisa dilakukan di sini tapi saya senang saya mendapat solusi yang berhasil.
Saya menemukan bug di mana intinya berada di urutan yang salah, sial!
Versi lama: 280 byte
sumber
Python 2, 199 byte
sumber
Ruby, 128 byte
Output membuntuti baris baru jika tinggi 1.
Tautan Ideone: https://ideone.com/96WYHt
sumber
[w,h]*""
alih - alih"%d%d"%[w,h]
untuk 4 byte, dan Anda tidak perlu tanda kurung di sekitars[q-2,w].reverse
, tetapi kemudian Anda akan membutuhkan spasi setelah:
, jadi -1 byte.JavaScript,
213212202Tentunya memiliki ruang untuk perbaikan.
Sunting: Menyimpan satu byte berkat TheLethalCoder
sumber
`${c}${a}`.repeat(l+1)
mungkin menghemat satu byte.W=W.substr(0,a-2).replace(/./g," ")
sama denganW=" ".repeat(a-2)
? (Apakah kode Anda benar-benar berfungsia=1
?)C, 311 byte
Menggunakan perpustakaan yang disertakan secara otomatis
stdio.h
danstring.h
.sumber
JavaScript (ES6), 171 byte
Dimana
\n
mewakili karakter baris baru literal. Membuat string digit berulang, kemudian memutuskan apa yang akan digabungkan berdasarkan pada baris mana kita berada; baris atas hanyalah irisan awal dari string digit yang diulang, baris bawah (jika ada) adalah irisan terbalik dari tengah-tengah string, sementara baris intervensi dibangun menggunakan karakter yang diambil dari bagian lain dari string.sumber
(w,h)=>
kew=>h=>
menyimpan byteTSQL, 291 byte
Golf:
Tidak Disatukan:
Biola
sumber
Python 3,
155148 byteBermain golf 7 byte lagi:
Digantikan
2*w+2*h-4or 1
untukmax(1,2*w+2*h-4)
dan['',s[-i-1]][w>1]
untuk(s[-i-1]if w>1else'')
.Versi sebelumnya:
sumber