Bukankah ini mengganggu ketika Anda mengambil foto, tetapi latar belakangnya mengurangi substansi gambar yang sebenarnya? Saya akan mengatakan begitu. Saya perlu tahu berapa banyak yang harus saya potong agar saya dapat mengatasi masalah ini! Tapi - seperti biasa - saya cukup malas, jadi saya butuh seseorang untuk melakukan ini untuk saya ...
Tugas & Aturan
Diberikan matriks biner yang mewakili gambar, output dimensi (lebar dan tinggi) dari sub-matriks terkecil yang berisi semua s dalam matriks asli. Sebuah sub-matriks adalah sebuah blok dari entri yang berdekatan dari matriks asli. Secara ekivalen, ini adalah matriks baru yang dibentuk dengan tumpang tindih subset dari baris yang berdekatan dan subset dari kolom yang berdekatan dari aslinya.
- Dimungkinkan untuk mengambil lebar dan tinggi matriks sebagai input juga.
- Input dijamin mengandung setidaknya satu .
- Anda dapat mengambil input dan memberikan output melalui metode standar apa pun , sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf , jadi cobalah untuk menyelesaikan tugas dalam byte paling sedikit yang dapat Anda kelola dalam bahasa pilihan Anda.
Contoh
Uji kasus
Masukan | Keluaran [[0,1,0,0,0,1,0]] -> (5,1) atau (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0]] -> (3,2) atau (2,3) [[1,1,1,1], [0,0,0,0], [0,0,0,0], [1,0,0,0]] -> (4,4) [[0,0,0,0,0,0]], [0,1,0,1,0,1], [0,0,0,0,0,0]] -> (5,1) atau (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,1,0,1,0], [ 0,0,0,0,0]] -> (3,3) [[0,0,0,0,0,0], [0,1,0,1,0,0], [0,1,1,0,1,1], [0,0,1, 0,1,0], [0,0,0,0,0,0]] -> (5,3) atau (3,5)
code-golf
array-manipulation
matrix
binary-matrix
Tuan Xcoder
sumber
sumber
Jawaban:
MATL , 5 byte
Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
APL (Dyalog Unicode) , 10 byte SBCS
Fungsi awalan diam-diam anonim.
Cobalah online!
⍸
indeks 1s.(
...)
terapkan fungsi tersembunyi berikut untuk itu:⌊/
minimum ( koordinat y terendah dan koordinat x terendah )⌈/-
minus maksimum yang (ini memberi kami kisaran)1+
satu plus itu (termasuk)sumber
Oktaf ,
57 5645 byteIni
find
dia angkat berat: Inifinds
adalah baris dan kolom yang berisi entri bukan-nol. Maka kita hanya perlu menemukan perbedaan antara maksimum dan minimum (plus satu) untuk masing-masing secara terpisah.Terima kasih @beaker dan @AndrasDeak untuk -1 byte, dan @LuisMendo untuk -11 byte!
Cobalah online!
sumber
Python 2 ,
9286 byteCobalah online!
sumber
Jelly , 7 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 ,
6355 byte-8 dengan bantuan dari Vincent (gunakan matriks input sebagai array Numpy)
Fungsi yang tidak disebutkan namanya menerima 2-d Numpy array of integer (in
{0,1}
) yang mengembalikan daftar integer[width,height]
,.Cobalah online!
Versi Non-Numpy dalam 63 byte (menerima daftar daftar bilangan bulat di
{0,1}
):Cobalah online!
Bagaimana?
Mengingat matriks,
a
,for
masing-masing (v
) dari transpos,zip(*a)
dana
itu sendiri kita menemukan ketinggian yang diperlukan (mengingat transpose ini adalah lebar).Pemetaan
max
di seluruhv
menghasilkan daftar nol dan yang, mewakili jika setiap barisv
berisi yang ada. Representasi string dari daftar ini ditemukan menggunakan backticks (`...`
), ini memberikan string dengan leading[
, lalu nol dan yang dibatasi oleh,
(koma + spasi). Kami mengiris string ini mulai dari indeks satu di langkah tiga menggunakan[1::3]
kami mendapatkan string hanya nol dan yang, yang memungkinkan kami untuk menggunakan fungsi stringstrip
untuk menghapus nol luar (strip('0')
).Sebagai contoh:
sumber
Retina 0.8.2 , 83 byte
Cobalah online! Penjelasan:
Hapus baris nol di depan dan di belakang.
Hapus semua
0
pada baris di atas yang terakhir. Hapus semua1
keduanya, tetapi ubah digit di bawahnya pada baris berikutnya menjadi1
dalam kasus itu. Ini bitwise atau baris bersama.Hitung jumlah baris sebagai jumlah baris baru ditambah 1 dan jumlah kolom sebagai jumlah digit antara 1 dan terakhir.
sumber
J , 31 byte
Cobalah online!
Penjelasan:
sumber
q / kdb +, 16 byte
sumber
Mathematica, 34 byte
Fungsi murni. Mengambil daftar integer yang bersarang sebagai input, dan mengembalikan daftar dua integer (tinggi diikuti oleh lebar) sebagai output. Karakter Unicode adalah U + F3C7 untuk
\[Transpose]
.sumber
R ,
4846 byteCobalah online!
-2 byte disimpan oleh Giuseppe.
sumber
05AB1E ,
119 byte-2 byte terima kasih kepada @ Mr.Xcoder .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
ζ‚Oε0Û0Üg
menghemat 2 byte.Jelly , 9 byte
Cobalah online!
sumber
Haskell , 76 byte
Cobalah online!
sumber
Japt,
1615 byteCobalah atau jalankan semua test case
Penjelasan
sumber
Ruby , 60 byte
Cobalah online!
sumber