To jest proste: weź macierz liczb całkowitych jako dane wejściowe i wyślij indeks wiersza z najbardziej niezerowymi elementami. Możesz założyć, że będzie tylko jeden wiersz z najbardziej niezerowymi elementami.
Przypadki testowe:
Są to indeksy 1, możesz wybrać, czy chcesz indeksować 0 czy 1.
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
Ā
zamiastÄ0›
dla -2.R , 31 bajtów
zwraca anonimową funkcję, która przyjmuje macierz:
rowSums
sumuje wiersze,!m
przekształcając 0 na 1, a wszystko inne na 0.which.min
zwraca indeks pierwszego wiersza oparty na 1, który zawiera sumę minimalną (tj. który wiersz ma najmniej zer).Wypróbuj online!
źródło
which.min()
ponieważ niezerowe elementy staną się NIEPOPRAWNE!m
.Haskell,
464241 bajtówWypróbuj online!
Jak to działa
źródło
C #, 69 bajtów
Pobiera
List<int[]>
dane wejściowe i zwraca wynik z indeksem 0.źródło
Właściwie 9 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Python 3,
5448 bajtówOgolono 6 bajtów. Stare rozwiązanie:
źródło
APL (Dyalog) , 11 bajtów
Wypróbuj online!
0≠⎕
Macierz boolowska gdzie niezerowa+/
suma wierszy(
zastosuj następującą ukrytą funkcję do listy sum⌈/
maksimum⍳
indeks⊢
na liście argumentów)
źródło
Brachylog , 17 bajtów
Wypróbuj online!
źródło
05AB1E , 5 bajtów
Wypróbuj online!
0-indeksowane.
źródło
Galaretka , 5 bajtów
Wypróbuj online!
1-indeksowany.
Tak wiele wersji 5-bajtowych ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...źródło
Haskell -
6968 bajtówOszczędność jednego bajtu dzięki Siracusa!
Rzędy są indeksowane zerowo
Stosowanie
Wypróbuj online!
źródło
g=filter
oszczędza jeden bajtm y=length$takeWhile(<maximum y)y
i skrócićlength
zamiastfilter
Clojure, 64 bajty
Ten działa również z liczbami ujemnymi na wejściu, na szczęście takiej samej długości jak oryginał:
Oryginalny:
źródło
pos?
nie jest poprawneq / kdb +,
251716 bajtówRozwiązanie:
Przykład:
Wyjaśnienie:
Uwagi:
Problem jest dość prosty, rozwiązanie to wydaje się zbyt skomplikowane.Gdy tylko kliknąłem przycisk Prześlij, zdałem sobie sprawę z błędu moich działań.Premia:
Oto rozwiązanie ak że ciężary w na
16109 bajtów - niemal dokładnie takie same, ale 7 bajtów krótsze ze względu na fakt, że nie trzeba wsporniki przy użyciu k Zabudowy, aw rezultacie niektóre stają się krótsze niż słowa kluczowe Q ( np.+/
dlasum
(byłoby(+/)
w q)).źródło
CJam , 11 bajtów
Wypróbuj online!
-2 dzięki Challenger5 .
źródło
{0fe=_:e>#}
>
powinien<
zamiast tego ... dzięki i tak. :)PHP , 58 bajtów
Indeksowane 0
Wypróbuj online!
źródło
V , 18 bajtów
Wypróbuj online!
W przeciwieństwie do większości odpowiedzi V jest on indeksowany na 0.
Nieźle jak na język bez obsługi numerycznej!
;P
Odkryłem również, że wariant polecenia liczenia , który jest pisany wielkimi literami
Ø
, jest strasznie zepsuty.źródło
Python 3 , 92 bajty
Najpierw posortuj każdy wiersz w taki sposób, aby wpisy były
[0,0,..,0,x,x,x]
następnie posortowane przez całą macierz, tak aby ostatni wpisy
był wierszem, którego szukamy. Kopiowaniey=x[:]
jest konieczne, ponieważ.sort()
działa w miejscu, dlatego nie znamy oryginalnego indeksu po posortowaniu.Doceniam wszelką pomoc, jak dalej grać w golfa w tym rozwiązaniu. Większość bajtów jest traconych z powodu białych znaków w każdej linii. Sam kod ma tylko 68 bajtów.
Wypróbuj online!
źródło
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 bajtów0
s i użyjmin()
zamiastmax()
input()
zamiastdef
lambda
i hash-mapWypróbuj online!
źródło
min
zkey
parametruJavaScript (ES6), 62 bajty
0-indeksowane. Pobiera tablicę 2D jako dane wejściowe.
źródło
filter
niejawnie „filtruje” zera?filter
, pamiętając, że0
jest falsey.filter
właśnie było, tylko upewniłem się.Galaretka , 7 bajtów
Wypróbuj online!
źródło
Pyth, 6 bajtów
Demonstracja
Zamiast znajdować wiersz z najbardziej niezerowymi elementami, znajduję wiersz z najmniej zerowymi elementami.
/D0
: Kolejność (D
) według liczby (/
) zer (0
). Domyślnie zastosowane doQ
danych wejściowych.h
: Weź pierwszy i minimalny element.xQ
: Znajdź indeks (x
) na wejściu (Q
) tego elementu.źródło
Siatkówka , 46 bajtów
Wypróbuj online!
0-indeksowane. Działa z dodatnimi i ujemnymi liczbami całkowitymi (i 0). Nie zakłada zer wiodących.
źródło
Java 8, 145 bajtów
Brzydkie, ale działa ...
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Java (OpenJDK 8) ,
119101 bajtówWypróbuj online!
Java, ten słodki, pełny język :)
Dzięki za uratowanie 18 bajtów, @KevinCruijssen;)
źródło
j
i inne dłuższe części jakj=m[i].length,
im[i][j]
tak: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 bajtów )JavaScript (ES6), 51 bajtów
gdzie
m
jest tablica 2D, a zwrócony indeks ma indeks 0Przypadki testowe:
Pokaż fragment kodu
źródło
Java 8, 100 bajtów
Wyjaśnienie
Moc list i strumieni! (i bez importu, aby uruchomić!)
Podzielmy tę małą lambda na części:
Przekształcamy naszą listę list (macierz w pytaniu) w strumień i przeglądamy każdy element, usuwając wszystkie te nieznośne zera z każdej podlisty. Za każdym razem musimy jawnie zwrócić listę podrzędną, ponieważ
Stream.map()
konwertuje każdy obiekt w strumieniu na wszystko, co zwraca mapowanie, i nie chcemy ich zmieniać.Przeglądamy nasze nowo wyzerowane podlisty i po prostu sprawdzamy, jak duże są obok siebie, co daje nam największą podlistę. Jest
.get()
tak, ponieważStream.max()
zwraca wartość Opcjonalne, wymagającą wywołania dodatkowej funkcji.Bierzemy tę największą podlistę i znajdujemy ją na głównej liście, dając nam nasz wynik!
Uwagi
To się psuje, jeśli zewnętrzna lista jest pusta, ale biorę
sugerować, że zawsze będzie co najmniej jeden rząd. Popraw mnie, jeśli się mylę.
źródło
Python 2 , 51 bajtów
Wypróbuj online!
Ta wersja usuwa zera stopniowo przez tablice, drukując bieżący indeks i ulega awarii, gdy nie ma już zer do usunięcia. Ostatni wydrukowany indeks jest odpowiedzią.
Python 2 , 57 bajtów
Wypróbuj online!
Chciałem wypróbować inne podejście niż już tutaj. Więc tutaj powtarzam iteracyjnie iterację po tablicy, usuwając po jednym 0, aż bieżąca tablica nie będzie miała już żadnych zer - a następnie wypisuje indeks tej tablicy.
źródło
Japt , 7 bajtów
0-indeksowane. Pobiera dane wejściowe jako tablicę tablic.
Sprawdź to
Wyjaśnienie
Domniemane wejście tablicy
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
) poU
zwróceniu liczby prawdziwych (niezerowych) elementów w każdej pod-macierzy. Niejawnie przypisz tę nową tablicę doU
.[2,1,3,2,0]
Zredukuj
r
tablicęU
, uzyskując większą z bieżącej wartości i bieżącego elementu.3
Uzyskaj pierwszy indeks, w
U
którym element równa się tej wartości, i domyślnie wyślij wynik.2
źródło