Diberikan input tilesX
dan tilesY
membuat metode yang akan membuat cincin persegi panjang dari ubin.
Fungsi harus memesan ubin dalam cincin seperti ini:
tilesX
dantilesY
selalu nilai integer positif, tidak boleh 0tilesX
dantilesY
tidak selalu sama, mengharapkan nilai-nilai seperti:2x5
,6x3
dll- Memeriksa input yang tidak valid tidak perlu
- Anda dapat menggunakan cara apa pun untuk menampilkan ubin, termasuk array 2d, seni ASCII, atau teks cetak.
- Tidak ada cara ketat bagaimana input dilewatkan asalkan dua bilangan bulat.
- Tidak dapat menjadi garis, menggambar ukuran persegi panjang
tilesX
dantilesY
piksel tidak valid - Kode terpendek menang
Jawaban:
Dyalog APL, 8 byte
Kereta fungsi monadik ini mengambil tinggi dan lebar sebagai argumen yang tepat dan mengembalikan array 2D 0 's (perbatasan) dan 1 's (interior). Uji di TryAPL .
Bagaimana itu bekerja
sumber
MATL , 10 byte
Ini menghasilkan array yang berisi nol dan satu.
Cobalah online!
Untuk output grafis, tambahkan
1YG
di akhir untuk menampilkan array sebagai gambar ( 13 byte ):Cobalah di MATL Online! Sebagai contoh,
menghasilkan
sumber
HTML / JS / CSS,
198194 byteVersi keluaran grafis. Hitungan byte tidak termasuk
f=
atau tiga<input>
elemen yang digunakan untuk tujuan demonstrasi saja. Disimpan 3 byte berkat @IsmaelMiguel.sumber
f=(n,m)=>{d.style.width=n*25+'px';d.style.height=m*25+'px';}
bisa disederhanakanf=(n,m)=>with(d.style)width=n*25+'px',height=m*25+'px';
?with
tidak menyelamatkan saya 3 byte tetapi saya masih perlu{}
s. Di sisi lain;
itu tidak perlu jadi saya menghapusnya juga.MATL , 10 byte
Argumen input adalah tinggi dan lebar sebagai bilangan bulat. Outputnya adalah matriks ukuran di
height x width
mana petak batas 0 dan nilai dalam 1.Cobalah secara Online!
Penjelasan
Logika yang sama dengan jawaban saya yang lain dengan byte lebih sedikit.
sumber
MATLAB,
3231 byteIni menciptakan fungsi anonim yang kemudian dapat dijalankan seperti
ans([4 5])
di dalam ruang kerja.Input is
[height, width]
dan output adalah matriks dengan 1 di pusat dan 0 untuk batas.Cara kerjanya adalah matriks ukuran input yang dibuat. Kemudian dikonvolusi dengan matriks identifikasi 3 x 3 dengan matriks diagonal. Kami menggunakan
same
input toconv2
(disingkat ke's'
sini) untuk menjaga hasil ukuran yang sama dengan input.Kami kemudian ingin mengkonversi output ke nilai biner dengan 0 di sekitar batas dan 1 di dalam. Kami menggunakan ketidaksetaraan
>2
karena semua piksel tepi akan memiliki hasil <3 dan semua elemen non-batas akan memiliki hasil yang sama dengan 3.Untuk keluaran grafis:
sumber
Jelly , 10 byte
Mengembalikan kisi 0 's (perbatasan) dan 1 's (interior). Cobalah online!
Bagaimana itu bekerja
sumber
Julia,
4634 byteIni adalah fungsi yang menerima dua bilangan bulat dan mengembalikan boolean array 2 dimensi.
Kami membangun matriks n × m menggunakan pemahaman array dengan
for
loop ganda . Untuk setiap indeks dari 1 ke n dan 1 ke m , yaitu setiap elemen dari matriks, kami menetapkan nilainya ketrue
jika n > i > 1 dan 1 < j < m . Ini benar di mana-mana kecuali batas, sehingga array yang dihasilkan akan adatrue
di tengah danfalse
di sekitar perbatasan.Contoh:
Disimpan 12 byte berkat Dennis!
sumber
CJam, 20 byte
Input harus dalam bentuk
height width
, output adalah kisi ASCII menggunakan spasi untuk pusat dan#
untuk batas.Uji di sini.
Penjelasan
sumber
Pyke,
1615 byteCoba di sini!
Penjelasan:
Untuk hasil yang lebih baik, gunakan kode ini .
Atau 13 byte dengan masker zeroed out di sekeliling tepi (karakter tengah bukan nol)
Coba di sini!
sumber
JavaScript (ES6), 80
82 85Edit 3 byte disimpan thx @Neil
Edit 2 byte disimpan menggunakan
reduce
untuk sekaliFungsi anonim mengembalikan string multi baris
Uji
sumber
!--h|!o
sudah bilangan bulat? Kalau tidak, saya suka menggunakan!o
.Ruby, 63 byte
Fungsi anonim, mencetak ke STDOUT. Perbatasan adalah
#
.sumber
JavaScript (ES6), 97 byte
Membuat cincin
0
s. Mungkin pendekatan yang mengerikan tetapi saya ingin menghindari kasus tepi.sumber
JavaScript (ES6), 77 byte
sumber
f(4)(4)
->Array [ Array[4], Array[4], Array[4], Array[4] ]
Retina ,
4543 byteInput harus dalam bentuk
height width
, output adalah kisi ASCII menggunakan1
untuk pusat dan#
untuk batas.Cobalah online!
Penjelasan
Konversi setiap angka
N
menjadi stringN
yang (mis. Konversi input ke unary).Cocok satu sama
1
diheight
dan menggantinya denganwidth
, sementara juga cocok segala sesuatu yang lain dan menghapus. Kami melakukan ini dengan menyalahgunakan split stage. Ini menciptakanw x h
kisi.Akhirnya kami mengganti setiap
1
dengan#
yang ditemukan di baris pertama, baris terakhir atau di awal atau akhir baris.sumber
Sebenarnya , 23 byte
Cobalah online!
Pendekatan ini sangat mirip dengan pendekatan saya dalam tantangan terkait ini .
Penjelasan:
sumber
QBasic, 69 byte
Dimensi sebagai
width,height
. Nilai boolean dari tes is-it-on-the border hanya dicetak:-1
for true dan0
for false. Contoh dijalankan seperti:Bonus: Versi grafis, 88 byte
Saya percaya ini dianggap sebagai "bukan garis." Ketika
MOD
ekspresi salah (0),PSET
plot sebuah piksel hitam; ketika itu benar (-1),PSET
tampaknya memplot piksel putih. Ini17,31
, ditampilkan pada ukuran 2x:sumber
TSQL,
10710597 bytesumber
Unicorn ,
2623 byteKarena siapa yang tidak suka unicorn ?!
Penjelasan (keluaran "daftar program"):
Output untuk
tilesX
= 3,tilesY
= 5:Catatan: Versi ini hanya berfungsi
tilesX
hingga 6 dantilesY
hingga 5. Pertanyaannya tidak menyebutkan kisaran apa yang perlu kita dukung, jadi saya berasumsi ini OK. Kalau tidak, tambahan kecil untuk program menghasilkan alternatif ini, yang mendukung kisaran yang sedikit lebih besar:Unicorn,
3027 byteDengan menambahkan
x0y9
, yang memulai kotak di (0,9), program ini berfungsitilesX
hingga 9 dantilesY
hingga 9 (karena input hanya naik hingga 9).sumber
J, 16 byte
Gunakan bentuk
$
untuk membuat persegi panjang semua yang ukuran input, dan kemudian gunakan bentuk Amend komplementer}
untuk mengubah interior menjadi nol.Cobalah online!
sumber
Perl 5 , 76 + 1 (
-a
) = 77 byteCobalah online!
sumber
Perl 5, 45 + 1 (
-p
) = 46 bytemengikuti 45 byte tidak menangani tileY = 1
Cobalah online
sumber