Tugas Anda adalah membuat kotak menggunakan salah satu karakter ASCII sehubungan dengan input yang diberikan.
Uji Kasus
1 1 --> =====
= =
=====
1 2 --> =========
= = =
=========
2 1 --> =====
= =
=====
= =
=====
2 2 --> =========
= = =
=========
= = =
=========
2 5 --> =====================
= = = = = =
=====================
= = = = = =
=====================
Memasukkan
Masukan dapat diambil dari salah satu dari berikut ini
stdin
- Argumen baris perintah
- Argumen fungsi (2 argumen, satu untuk setiap angka)
Input, jika diambil dari
stdin
atau argumen baris perintah, akan berisi dua bilangan bulat positif, dipisahkan oleh spasi.- Dua angka menunjukkan jumlah kotak di setiap kolom dan baris
Keluaran
- Kotak harus dikeluarkan di
stdout
(atau setara terdekat) - Setiap kotak harus memiliki tiga ruang horizontal di dalamnya
Aturan
- Kedua angkanya akan lebih besar dari 0, tetapi tidak akan melampaui 1000
- Setiap karakter yang terlihat dapat digunakan untuk mengeluarkan kotak. (Selama mereka tidak terlalu keras pada mata!)
- Anda diizinkan menulis program atau fungsi lengkap.
- Seharusnya tidak ada karakter yang tidak perlu kecuali karakter tambahan baris baru opsional.
Mencetak gol
Ini adalah kode-golf , sehingga pengiriman terpendek (dalam byte) menang.
JavaScript ( ES6 ), 83
Fungsi dengan parameter baris dan kolom. Menggunakan string template, ada 2 baris baru yang disematkan yang signifikan dan dihitung.
Output via
alert
(popup). Saatalert
menggunakan font proporsional, kami mendapatkan hasil yang lebih baik menggunakan huruf dengan lebar yang mirip dengan spasi alih-alih=
.Tes di Firefox menggunakan konsol untuk mendapatkan hasil nyata
alert
, atau jalankan cuplikan di bawah ini.sumber
Test in Firefox
JavaScript (ES6),
7573Menggunakan
repeat
panggilan berlebihan , kami ulangi|
, lalu ulangi|
dengan spasi tambahan, dan ulangi kedua pengulangan itu untuk membuat baris:(Baris baru signifikan, sesuai saran edc65 untuk menggunakan string template.)
Potongan:
Tanpa string templat, tanpa penggunaan kembali metode-nama, dan dengan spasi kosong ditambahkan:
(Menggunakan rekomendasi edc65 untuk digunakan
|
untuk jarak visual yang lebih baik.)sumber
Pip,
2924 = 23 + 1 byteMembutuhkan
-n
bendera. Mengambil tinggi dan lebar sebagai baris perintah args dan membangun kotak dari1
s.Penjelasan:
Program ini mengambil keuntungan besar dari fakta bahwa string adalah angka dan angka adalah string di Pip. (Dan tiga ruang di kotak itu kebetulan tepat untuk memanfaatkan
m
variabel bawaan!)Begini cara daftar dibuat dengan input
2 3
:Dan hasil akhirnya:
Lebih lanjut tentang Pip
sumber
Perl,
72635250 byteVersi terpendek saya namun digunakan
$/
untuk mendapatkan char baris baru lebih kompak:Pembaruan sebelumnya menempatkan sebagian besar baris kosong di pemisah catatan output
$,
, dan mencetak daftar garis kontinu.Versi sebelumnya mungkin sedikit lebih jelas untuk pembaca biasa:
Versi pertama yang digunakan
@ARGV
alih-alihpop
:sumber
Python 2,
5857 BytesImplementasi yang cukup mudah.
Lihat disini.
Terima kasih kepada Sp3000 untuk menghemat satu byte.
sumber
GNU sed -r, 160
Sigh, saya pikir ini akan lebih kecil, tapi ini dia. Sayangnya sed regex tidak memiliki kemampuan lookaround.
Mengambil masukan sebagai unary dari STDIN:
sumber
CJam, 25 byte
Cobalah online di juru bahasa CJam .
Bagaimana itu bekerja
sumber
Marbelous, 168 byte
Jawaban ini hanya berfungsi hingga 255x255, bukan 1000x1000, karena keterbatasan bahasa Marbelous. Saya sedang mengerjakan perpustakaan 32-bit, tetapi tidak akan siap dalam waktu dekat.
Input disediakan sebagai dua parameter baris perintah atau parameter fungsi ke papan utama.
Kodesemu:
sumber
CJam
52514641 byteBerkat Sp3000 untuk -5 karakter
Terima kasih kepada Martin Büttner untuk 5 karakter lainnya
Cobalah
sumber
fungsi c, 81
Program uji:
sumber
x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}
- 78PHP4.1,
767169 byteIni golf seperti yang saya bisa dapatkan.
Ini mengharapkan kunci
H
untuk memiliki jumlah baris danV
jumlah kotak per baris.Saya menggunakan
-
dan|
supaya kotak benar-benar terlihat seperti kotak. Jika diperlukan, saya bisa mengubahnya ke=
. Tidak masalah char yang digunakan.Meninggalkan
-
dan|
juga membantu untuk memahami kekacauan yang terjadi.Metode lama, 76 byte:
Contoh output:
sumber
Julia, 59 byte
Ini menciptakan fungsi tanpa nama yang menerima dua bilangan bulat sebagai input dan mencetak hasilnya ke STDOUT. Untuk menyebutnya, berikan nama, mis
f=(n,m)->...
.Penjelasan + tidak dikumpulkan:
Contoh:
Setiap saran dipersilahkan.
sumber
bash + coreutils, 57
Ini digunakan
dc
untuk mencetak angka biner yang ada1
untuk tepi kotak dan0
s untuk spasi.2 ^ (width * 4 + 1) - 1
, lalu didorong dan dicetak10001...0001
nomor dihitung dengan , kemudian mendorongX
* 8 / 15 + 1
height
kaliItu
tr
kemudian bertobat tersebut0
s untuk karakter ruang.Keluaran
sumber
R,
8381Sebagai fungsi yang tidak disebutkan namanya mengambil h dan w sebagai parameter. Buat garis 1 dan kedua menjadi vektor untuk setiap baris dan ulangi
h
kali. Menambahkan vektor untuk garis bawah dancat
menggunakan vektorfill
untuk membatasi panjang garis. Sekarang manfaatkan aturan karakter apa pun yang terlihat.Uji coba
sumber
Python
32,160878579 byteSaya tahu ini bisa lebih banyak bermain golf, saya ingin beberapa saran karena ini adalah percobaan pertama saya bermain golf.
Berkat tips @Cool Guy dan @ Sp3000, saya mempersempit ukurannya hingga tepat di
atassetengahnya.Misalnya: d (3,3)
Cobalah di sini .
Maafkan spasi spasi tambahan.
sumber
'='*(4*y+1)
w=4*y+1
menghemat 3 byte.KDB (Q), 37 byte
Penjelasan
Uji
sumber
JavaScript,
9285 byteSaya berharap ini akan lebih pendek dari jawaban JS lainnya (kerja bagus seperti biasa, edc65), tapi oh well. Saya merasa matematika di sini bisa lebih jauh golf.
sumber
f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s
-> 852*r+1
=>r-~r
persis apa yang saya maksudkan dengan bermain golf matematika, dan yang khusus itu jenius. :)Oktaf,
696564Terima kasih kepada DLosc untuk menunjukkan masalah yang mengarah ke -1
Mengambil input
[1 1]
dan output:Anda juga bisa memasukkan '1' dan mendapatkan 1x1. Jika input benar-benar perlu
1 1
, ukurannya naik888584 :Catatan: Matlab tidak memungkinkan rangkaian atau input Octave (integer), tetapi di sini adalah versi Matlab ( 67 ):
sumber
C, 76 byte
Dipanggil sebagai fungsi dengan jumlah baris dan kolom sebagai argumen. Sebagai contoh:
sumber
CJam,
3029 byteVersi baru dengan redundan
+
pada akhirnya dihapus (terima kasih, Dennis):Saya tahu bahwa Dennis sudah memposting solusi CJam yang mengalahkan ini dengan mil. Tapi ini adalah upaya pertama saya di CJam, jadi itu keajaiban bahwa itu bekerja sama sekali. :)
Kekuatan yang cukup kasar. Buat garis pertama dari
4 * H + 1
=
tanda, lalu baris kedua dari waktu yang=
berulangH
, dengan yang lain=
ditambahkan. Kemudian menggabungkan dua baris, mengulangi semuanyaV
kali, dan kemudian menambahkan salinan lain dari baris pertama.Rasanya seperti saya memiliki manipulasi stack terlalu banyak, dan bahkan akhirnya menyimpan baris pertama dalam sebuah variabel karena saya harus mengacak barang-barang di stack bahkan lebih sebaliknya.
Secara keseluruhan tidak terlalu elegan, tetapi Anda harus mulai di suatu tempat ... dan saya ingin mencoba masalah sederhana terlebih dahulu.
sumber
+
pada akhirnya. CJam mencetak seluruh tumpukan.CJam, 23
Cobalah online
Penjelasan:
sumber
Dart, 57
Cobalah di: https://dartpad.dartlang.org/36ed632613395303ef51
sumber
Jawa, 181
Saya berharap itu sesuai dengan
itu sesuai dengan aturan untuk menghitung byte fungsi , yaitu 181 dalam hal ini
sumber
for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}
kefor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
C #,
153151150Ini tidak dapat benar-benar bersaing tetapi ini hanya untuk bersenang-senang:
Cara menjalankan:
Terbuka untuk peningkatan.
sumber
int
di luar loop dapat menghemat satu byte.Python 2.7, 66 byte.
Saya tahu sudah ada solusi yang lebih baik dalam python, tapi itu yang terbaik yang saya hasilkan.
Contoh:
sumber
Ruby,
574845Pemakaian:
Berkat manatwork karena telah menghemat 3 byte.
sumber
'='
→?=
dan"<LF>"
→$/
.?=*(w*4+1)
→?=+?=*w*4
Java,
123119 byteMenyalahgunakan parameter input sebagai penghitung sangat membantu dalam mengurangi ukuran kode.
Terima kasih kepada Cool Guy karena menyarankan penyalahgunaan sintaksis.
sumber
for
loop, bukanwhile
loop.while(w-->0){d+=" =";b+="====";}
->for(;w-->0;b+="====")d+=" =";
yang menghemat tiga byteSAS,
117119Contoh:
Hasil:
sumber
DNS_PROBE_FINISHED_NXDOMAIN