Diberi dua bilangan bulat sebagai input dalam larik, gambarkan sebuah persegi panjang, menggunakan bilangan bulat pertama sebagai lebar dan kedua sebagai tinggi.
Atau, jika bahasa Anda mendukungnya, kedua bilangan bulat dapat diberikan sebagai input terpisah.
Asumsikan lebar dan tinggi tidak akan kurang dari 3, dan mereka akan selalu diberikan.
Contoh Keluaran:
[3, 3]
|-|
| |
|-|
[5, 8]
|---|
| |
| |
| |
| |
| |
| |
|---|
[10, 3]
|--------|
| |
|--------|
Ini adalah kode-golf, jadi jawabannya dengan jumlah byte terendah menang.
Ị
:)Matlab,
696556 byteTerima kasih @WeeingIfFirst dan @LuisMendo untuk beberapa byte =)
Ini sangat sederhana di Matlab: Pertama buat matriks dengan ukuran yang diinginkan, kemudian buat indeks baris pertama dan terakhir untuk memasukkan
-
, dan lakukan hal yang sama dengan kolom pertama dan terakhir untuk disisipkan|
.Misalnya
f(4,3)
pengembaliansumber
z([1,b],1:a)=45;z(1:b,[1,a])=124;z=[z,'']
z(b,a)=' ';z([1,b],:)=45;z(:,[1,a])=124
z(b,a)=' '
sebagai char. Setelah itu Anda dapat mengisi dengan angka dan mereka secara otomatis dilemparkan ke char.z
mempertahankan tipe aslinyaJavaScript (ES6), 63 byte
sumber
Haskell,
6255 byteContoh penggunaan:
Fungsi helper
f
mengambil daftar elemen dua[a,b]
dan nomorn
dan mengembalikan daftar satua
diikuti olehn-2
b
s diikuti oleh satua
. Kita dapat menggunakanf
tiga kali: untuk membangun garis atas / bawah:, garisf "|-" i
tengah:f "| " i
dan dari keduanya seluruh persegi panjang:f [<top>,<middle>] j
(catatan:j
tidak muncul sebagai parameterg i
karena aplikasi parsial).Sunting: @dianne menyimpan beberapa byte dengan menggabungkan dua
Char
argumen menjadi satuString
dengan panjang 2. Terima kasih banyak!sumber
#
idenya!(a:b)#n=a:([3..n]>>b)++[a]
dan menulis["|-"#i,"| "#i]#j
Python 2,
6158 byte-3 byte terima kasih kepada @flornquake (hapus tanda kurung yang tidak perlu; gunakan
h
sebagai penghitung)Kasus uji ada di ideone
sumber
('- '[1<i<h])
tidak membutuhkan tanda kurung.exec"print'|'+'- '[1<h<%d]*(w-2)+'|';h-=1;"%h*h
h
penghitung itu pintar! Terima kasih.PHP, 74 Bytes
sumber
!$i|$n==++$i
bukannya!$i|$n-1==$i++
$i++&&$n-$i?" ":"-"
$i++&&$n-$i?" ":"-"
->"- "[$i++&&$n-$i]
(-2)Vimscript,
9383757473666463 byteKode
Contoh
Penjelasan
Perhatikan bahwa itu tidak menggunakan
norm!
sehingga dapat mengganggu pemetaan kustom vim!sumber
MATL , 19 byte
Cobalah online!
Penjelasan
Pendekatannya mirip dengan yang digunakan dalam jawaban lain ini . Kode membangun susunan numerik formulir
dan kemudian nilainya digunakan sebagai indeks (berbasis-1, modular) ke dalam string
'|-| '
untuk menghasilkan hasil yang diinginkan.sumber
05AB1E ,
232220 byteInput diambil sebagai tinggi, lalu lebar.
Penjelasan
Cobalah online!
Disimpan 2 byte berkat Adnan
sumber
F„ -N_N¹<Q~è²Í×'|.ø,
.C, 73 byte
sumber
Python 2, 56 byte
flornquake menyimpan satu byte.
sumber
%c
konversi:'-%*c'%(h-1,45)
%*c
itu bahkan bukan apa-apa! Terima kasih. :)'-%%%dc'%~-h%45
juga bekerja dengan panjang yang sama.Common Lisp, 104 byte
Golf:
Tidak Terkumpul:
sumber
Turtlèd , 40 byte
Penerjemah
sedikittidak lagi bermasalahPenjelasan
sumber
Mathematica,
6764 byteTerima kasih kepada lastresort dan TuukkaX untuk mengingatkan saya bahwa pegolf harus licik dan menghemat 3 byte!
Implementasi langsung. Mengembalikan array string.
sumber
0<1
di tempatTrue
j==1
dapat dikurangi menjadij<1
, dani==1
menjadii<1
.Python 3,
10495 byte(umpan balik dari @ mbomb007: -9 bytes)
(golf kode pertama saya, hargai umpan balik)
sumber
range(y)
alih-alihrange(0,y)
, dan jikan
tidak pernah negatif Anda dapat menggunakanif n<1or n==~-y else
Batch, 128 byte
Mengambil lebar dan tinggi sebagai parameter baris perintah.
sumber
Haxe,
112106 byteTestcases
sumber
Java 135 byte
Golf:
sumber
o+=x "|\n"
? Apakah Anda bermaksud meletakkannya di+
sana?PowerShell v3 +, 55 byte
Mengambil input
$a
dan$b
. Loop dari1
ke$b
. Setiap iterasi, kami membuat satu string. Bagian tengah dipilih dari array dari dua string panjang tunggal, kemudian string-dikalikan dengan$a-2
, sementara itu dikelilingi oleh pipa. String yang dihasilkan dibiarkan dalam pipa, dan output melalui implisitWrite-Output
terjadi pada penyelesaian program, dengan pemisah baris baru default.Atau, juga pada 55 byte
Yang ini muncul karena saya mencoba golf pemilihan array di tengah dengan menggunakan string sebagai gantinya. Namun, karena
[char]
waktu[int]
tidak ditentukan, kami kehilangan tabungan dengan harus menggunakan string dengan parens dan''+
.Kedua versi memerlukan v3 atau yang lebih baru untuk
-in
operator.Contohnya
sumber
PHP, 82 byte
mengindeks string statis termasuk baris baru
sumber
Ruby,
595452 byteOh, itu jauh lebih sederhana :)
Tes dijalankan di ideone
sumber
\n
.i
danj
. Gantii
definisi denganx-=2
. Alih-alihj
, gunakan saja(y-2)
.Perl, 48 byte
Termasuk +1 untuk
-n
Berikan ukuran sebagai 2 baris pada STDIN
Hanya kode:
sumber
Lua,
12093 byteDisimpan beberapa byte dengan menghilangkan kebodohan atas kerumitan.
Tidak Terkumpul:
Cobalah di Repl.it
sumber
Python 2, 67 byte
Contohnya
sumber
MATL ,
2117 byteIni adalah pendekatan yang sedikit berbeda dari yang ada MATL-God .
Terima kasih @LuisMendo untuk semua bantuannya!
Cobalah secara Online!
sumber
PHP 4.1, 76 byte
Ini mengasumsikan Anda memiliki
php.ini
pengaturan default untuk versi ini, termasukshort_open_tag
danregister_globals
diaktifkan.Ini membutuhkan akses melalui server web (mis: Apache), meneruskan nilai-nilai melalui variabel sesi / cookie / POST / GET.
Kunci
W
mengontrol lebar dan kunciH
mengontrol ketinggian.Sebagai contoh:
http://localhost/file.php?W=3&H=5
sumber
Python 3, 74 karakter
sumber
Swift (2.2) 190 byte
Saya pikir Swift 3 bisa bermain golf ini lebih banyak tetapi saya tidak ingin mengunduh Swift 3.
sumber
F #, 131 byte
sumber