Ini sederhana: Ambil matriks bilangan bulat sebagai input, dan output indeks baris dengan elemen paling tidak nol. Anda dapat berasumsi bahwa hanya akan ada satu baris dengan elemen paling tidak nol.
Kasus uji:
Ini adalah 1-diindeks, Anda dapat memilih jika Anda ingin 0 atau 1-diindeks.
1
0
row = 1
---
0 -1
0 0
row = 1
---
1 1 0 0 0
0 0 5 0 0
2 3 0 0 0
0 5 6 2 2
row = 4
---
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
row = 3
Ā
sebagai gantiÄ0›
untuk -2.R , 31 byte
mengembalikan fungsi anonim yang mengambil matriks:
rowSums
menjumlahkan baris, dengan!m
mengubah 0 menjadi 1 dan yang lainnya menjadi 0.which.min
mengembalikan indeks berbasis 1 dari baris pertama yang berisi jumlah minimum (yaitu, baris yang memiliki nol paling sedikit).Cobalah online!
sumber
which.min()
karena elemen yang tidak nol akan menjadi SALAH dengan!m
.Haskell,
464241 byteCobalah online!
Bagaimana itu bekerja
sumber
C #, 69 byte
Mengambil
List<int[]>
input sebagai dan mengembalikan hasil terindeks 0.sumber
Sebenarnya , 9 byte
Cobalah online!
Penjelasan:
sumber
Python 3,
5448 byteDicukur 6 byte. Solusi lama:
sumber
APL (Dyalog) , 11 byte
Cobalah online!
0≠⎕
Matriks Boolean di mana bukan nol+/
jumlah baris(
menerapkan fungsi diam-diam berikut ke daftar jumlah⌈/
maksimum⍳
indeks⊢
dalam daftar argumen)
sumber
Brachylog , 17 byte
Cobalah online!
sumber
05AB1E , 5 byte
Cobalah online!
Diindeks 0.
sumber
Jelly , 5 byte
Cobalah online!
1-diindeks.
Begitu banyak versi 5-byte ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...sumber
Haskell -
6968 BytesDisimpan satu byte berkat Siracusa!
Baris tidak diindeks
Pemakaian
Cobalah online!
sumber
g=filter
menghemat satu bytem y=length$takeWhile(<maximum y)y
dan memperpendeklength
alih-alihfilter
Clojure, 64 byte
Yang ini juga berfungsi dengan angka negatif dalam input, untungnya sama panjangnya dengan yang asli:
Asli:
sumber
pos?
tidak benarq / kdb +,
251716 byteLarutan:
Contoh:
Penjelasan:
Catatan:
Masalahnya cukup mudah, solusi ini terasa terlalu rumit.Segera setelah saya menekan kirim, saya menyadari kesalahan cara saya.Bonus:
Inilah solusi ak yang memberikan bobot pada
16109 byte - hampir persis sama tetapi 7 byte lebih pendek karena faktanya kita tidak memerlukan tanda kurung saat menggunakan k built-in, dan sebagai hasilnya beberapa menjadi lebih pendek daripada kata kunci q ( misalnya+/
untuksum
(akan berada(+/)
di q)).sumber
CJam , 11 byte
Cobalah online!
Terima kasih kepada Challenger5 .
sumber
{0fe=_:e>#}
>
seharusnya<
malah ... terima kasih. :)PHP , 58 byte
Diindeks 0
Cobalah online!
sumber
V , 18 byte
Cobalah online!
Tidak seperti kebanyakan jawaban V, ini diindeks 0.
Tidak buruk untuk bahasa tanpa dukungan angka!
;P
Saya juga telah menemukan bahwa varian huruf besar dari perintah hitung , yaitu
Ø
, rusak parah.sumber
Python 3 , 92 byte
Pertama, sortir setiap baris sedemikian rupa
[0,0,..,0,x,x,x]
sehingga entri kemudian urutkan seluruh matriks, sehingga entri terakhir masuky
adalah baris yang kita cari. Salinany=x[:]
diperlukan, karena.sort()
berfungsi di tempat, maka kita tidak tahu indeks asli setelah penyortiran.Saya menghargai bantuan apa pun untuk menyempurnakan solusi ini. Sebagian besar byte hilang karena spasi putih di setiap baris. Kode itu sendiri hanya sepanjang 68 byte.
Cobalah online!
sumber
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 byte0
dan gunakanmin()
sebagai gantinyamax()
input()
sebagai gantidef
lambda
dan hash-mapCobalah online!
sumber
min
dengankey
parameterJavaScript (ES6), 62 byte
Diindeks 0. Mengambil array 2D sebagai input.
sumber
filter
secara implisit "menyaring" nol?filter
, mengingat itu0
adalah falsey.filter
yang hanya memastikan.Jelly , 7 byte
Cobalah online!
sumber
Pyth, 6 byte
Demonstrasi
Alih-alih menemukan baris dengan elemen paling tidak nol, saya menemukan baris dengan elemen paling sedikit nol.
/D0
: Memesan (D
) dengan hitung (/
) dari nol (0
). Secara implisit diterapkan padaQ
, input.h
: Ambil elemen pertama dan minimum.xQ
: Temukan indeks (x
) di input (Q
) elemen itu.sumber
Retina , 46 byte
Cobalah online!
Diindeks 0. Bekerja dengan bilangan bulat positif dan negatif (dan 0). Diasumsikan tidak ada nol di depan.
sumber
Java 8, 145 byte
Jelek, tapi berhasil ..
Penjelasan:
Coba di sini.
sumber
Java (OpenJDK 8) ,
119101 byteCobalah online!
Java, bahasa verbose yang manis :)
Terima kasih telah menyimpan 18 byte, @KevinCruijssen;)
sumber
j
dan bagian-bagian lain yang lebih panjang sepertij=m[i].length,
danm[i][j]
seperti ini:m->{int i=m.length,M=0,I=0,c;for(;i-->0;){c=0;for(int x:m[i])if(x!=0)c++;if(c>M){M=c;I=i;}}return I;}
( 101 bytes )JavaScript (ES6), 51 Bytes
di mana
m
array 2D dan indeks yang dikembalikan adalah 0-diindeksKasus uji:
Tampilkan cuplikan kode
sumber
Java 8, 100 byte
Penjelasan
Kekuatan Daftar dan Streaming! (dan tanpa impor, untuk boot!)
Mari kita pecahkan lambda kecil ini menjadi beberapa bagian:
Kami mengubah Daftar Daftar kami (matriks dalam pertanyaan) menjadi Stream dan menelusuri setiap elemen, menghapus semua nol sial itu dari setiap sub-Daftar. Kita perlu secara eksplisit mengembalikan sublist setiap kali di sini, karena
Stream.map()
mengkonversi setiap objek dalam Stream ke apa pun yang dikembalikan oleh pemetaan, dan kami tidak ingin mengubahnya.Kita membaca sub-daftar yang baru dihapus, dan cukup memeriksa seberapa besar mereka di samping satu sama lain, menjadikan kita sublist terbesar. Ini
.get()
karenaStream.max()
mengembalikan Opsional, yang membutuhkan panggilan fungsi tambahan.Kami mengambil sublist terbesar itu, dan menemukan di mana itu ada dalam Daftar utama, memberi kami hasil kami!
Catatan
Ini rusak jika daftar luar kosong, tapi saya ambil
menyiratkan bahwa akan selalu ada setidaknya satu baris. Koreksi saya jika saya salah.
sumber
Python 2 , 51 byte
Cobalah online!
Versi ini menghapus 0s secara progresif melalui array, mencetak indeks saat ini, dan crash ketika tidak ada lagi nol untuk dihapus. Indeks cetak terakhir adalah jawabannya.
Python 2 , 57 byte
Cobalah online!
Ingin mencoba pendekatan yang berbeda dari yang sudah ada di sini. Jadi di sini saya secara berulang-ulang beralih pada array menghapus satu 0 pada suatu waktu sampai array saat ini tidak lagi memiliki angka nol - dan kemudian menampilkan indeks array itu.
sumber
Japt , 7 byte
Diindeks 0. Mengambil input sebagai array array.
Menguji
Penjelasan
Input array secara implisit
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
) untukU
mengembalikan jumlah elemen kebenaran (bukan nol) di setiap sub-array. Secara implisit tetapkan larik baru ini keU
.[2,1,3,2,0]
Kurangi (
r
) arrayU
dengan mendapatkan yang lebih besar dari nilai saat ini dan elemen saat ini.3
Dapatkan indeks pertama di
U
mana elemen sama dengan nilai itu dan secara implisit mengeluarkan hasilnya.2
sumber