Dies ist eine einfache Methode: Nehmen Sie eine Ganzzahlmatrix als Eingabe und geben Sie den Index der Zeile mit den meisten Nicht-Null-Elementen aus. Sie können davon ausgehen, dass es nur eine Zeile mit den meisten Nicht-Null-Elementen gibt.
Testfälle:
Diese sind 1-indiziert. Sie können wählen, ob Sie 0 oder 1-indiziert möchten.
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
Ā
anstelle vonÄ0›
für -2.R , 31 Bytes
gibt eine anonyme Funktion zurück, die eine Matrix annimmt:
rowSums
summiert die Zeilen, wobei!m
0 in 1 und alles andere in 0 umgewandelt wird.which.min
Gibt den 1-basierten Index der ersten Zeile zurück, die die Min-Summe enthält (dh welche Zeile die wenigsten Nullen hat).Probieren Sie es online!
quelle
which.min()
da Nicht-Null-Elemente mit FALSE werden!m
.Haskell,
464241 BytesProbieren Sie es online!
Wie es funktioniert
quelle
C #, 69 Bytes
Nimmt a
List<int[]>
als Eingabe und gibt das 0-indizierte Ergebnis zurück.quelle
Eigentlich 9 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Python 3,
5448 Bytes6 Bytes abgeschabt. Alte Lösung:
quelle
APL (Dyalog) , 11 Bytes
Probieren Sie es online!
0≠⎕
Boolesche Matrix, die nicht Null ist+/
Summenzeilen(
Wenden Sie die folgende implizite Funktion auf die Liste der Summen an⌈/
das Maximum ist⍳
Index⊢
in der Argumentliste)
quelle
Brachylog , 17 Bytes
Probieren Sie es online!
quelle
05AB1E , 5 Bytes
Probieren Sie es online!
0-indiziert.
quelle
Gelee , 5 Bytes
Probieren Sie es online!
1-indiziert.
So viele 5-Byte-Versionen ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...quelle
Haskell -
6968 BytesDank Siracusa ein Byte gespart!
Zeilen sind mit Null indiziert
Verwendung
Probieren Sie es online!
quelle
g=filter
spart Ihnen ein Bytem y=length$takeWhile(<maximum y)y
und Kürzunglength
stattfilter
Clojure, 64 Bytes
Dieser funktioniert auch mit negativen Zahlen in der Eingabe, zum Glück in der gleichen Länge wie das Original:
Original:
quelle
pos?
ist nicht korrektq / kdb +,
251716 BytesLösung:
Beispiel:
Erläuterung:
Anmerkungen:
Das Problem ist ziemlich einfach, diese Lösung fühlt sich zu kompliziert an.Sobald ich Submit drückte, bemerkte ich den Fehler meiner Wege.Bonus:
Hier ist eine Lösung, die mit
16109 Bytes gewichtet wird - fast genau das gleiche, aber 7 Bytes kürzer, da bei Verwendung der k integrierten Funktionen keine eckigen Klammern erforderlich sind und einige davon kürzer werden als die q Schlüsselwörter ( zB+/
fürsum
(wäre(+/)
in q)).quelle
CJam , 11 Bytes
Probieren Sie es online!
-2 dank Challenger5 .
quelle
{0fe=_:e>#}
>
sollte<
stattdessen sein ... trotzdem danke. :)PHP , 58 Bytes
0-indiziert
Probieren Sie es online!
quelle
V , 18 Bytes
Probieren Sie es online!
Im Gegensatz zu den meisten V-Antworten ist dies 0-indiziert.
Nicht schlecht für eine Sprache ohne numerische Unterstützung!
;P
Ich habe auch , dass die Groß Variante des entdeckte Zählung Befehls, das ist
Ø
, ist schrecklich gebrochen.quelle
Python 3 , 92 Bytes
Sortieren Sie zuerst jede Zeile so, dass die Einträge
[0,0,..,0,x,x,x]
dann die gesamte Matrix sortieren, sodass der letzte Eintrag iny
der Zeile ist, nach der wir suchen. Die Kopiey=x[:]
ist notwendig, da sie an Ort und Stelle.sort()
funktioniert. Daher kennen wir den ursprünglichen Index nach dem Sortieren nicht.Ich freue mich über jede Hilfe, um diese Lösung weiter zu verbessern. Die meisten Bytes gehen aufgrund der Leerzeichen in jeder Zeile verloren. Der Code selbst ist nur 68 Byte lang.
Probieren Sie es online!
quelle
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 Bytes0
s und benutzemin()
stattmax()
input()
stattdef
lambda
und Hash-MapProbieren Sie es online!
quelle
min
mit demkey
ParameterJavaScript (ES6), 62 Byte
0-indiziert. Nimmt ein 2D-Array als Eingabe.
quelle
filter
„Filter“ Nullen implizit?filter
, in Anbetracht, dass0
Falsey ist.filter
war, nur um sicher zu gehen.Gelee , 7 Bytes
Probieren Sie es online!
quelle
Pyth, 6 Bytes
Demonstration
Anstatt die Zeile mit den meisten Nicht-Null-Elementen zu finden, finde ich die Zeile mit den niedrigsten Null-Elementen.
/D0
: Reihenfolge (D
) nach Anzahl (/
) der Nullen (0
). Implizit angewendet aufQ
die Eingabe.h
: Nehmen Sie das erste und minimale Element.xQ
: Finden Sie den Index (x
) in der Eingabe (Q
) dieses Elements.quelle
Netzhaut , 46 Bytes
Probieren Sie es online!
0-indiziert. Funktioniert mit positiven und negativen ganzen Zahlen (und 0). Nimmt keine führenden Nullen an.
quelle
Java 8, 145 Bytes
Hässlich, aber es funktioniert ..
Erläuterung:
Probieren Sie es hier aus.
quelle
Java (OpenJDK 8) ,
119101 BytesProbieren Sie es online!
Java, diese süße, ausführliche Sprache :)
Danke, dass du 18 Bytes gespart hast, @KevinCruijssen;)
quelle
j
und andere mehr Teile wiej=m[i].length,
undm[i][j]
wie folgt aus :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
Dabei
m
ist ein 2D-Array und der zurückgegebene Index ist 0-indiziertTestfälle:
Code-Snippet anzeigen
quelle
Java 8, 100 Bytes
Erläuterung
Die Kraft der Listen und Streams! (Und ohne die Importe, um zu booten!)
Brechen wir dieses kleine Lambda in Stücke:
Wir wandeln unsere Liste der Listen (die Matrix in der Frage) in einen Stream um und gehen jedes Element durch, wobei wir alle diese nervigen Nullen aus jeder Unterliste entfernen. Wir müssen die Unterliste jedes Mal hier explizit zurückgeben, da
Stream.map()
jedes Objekt im Stream in das konvertiert wird, was auch immer die Zuordnung zurückgibt, und wir möchten sie nicht ändern.Wir gehen unsere neu entnullten Unterlisten durch und überprüfen einfach, wie groß sie nebeneinander sind, um die größte Unterliste zu erhalten. Das
.get()
liegt daran, dass dasStream.max()
eine Optional gibt, erfordern , dass zusätzliche Funktionsaufruf.Wir nehmen diese größte Unterliste und finden heraus, wo sie sich in der Hauptliste befindet. So erhalten wir unser Ergebnis!
Anmerkungen
Dies bricht, wenn die äußere Liste leer ist, aber ich nehme
zu implizieren, dass es immer mindestens eine Zeile geben wird. Korrigiere mich, wenn ich falsch liege.
quelle
Python 2 , 51 Bytes
Probieren Sie es online!
Diese Version entfernt schrittweise Nullen durch die Arrays, druckt den aktuellen Index und stürzt ab, wenn keine Nullen mehr entfernt werden müssen. Der zuletzt gedruckte Index ist die Antwort.
Python 2 , 57 Bytes
Probieren Sie es online!
Wollte eine andere Herangehensweise ausprobieren als die, die bereits hier ist. Also iteriere ich hier rekursiv über das Array und entferne jeweils eine 0, bis das aktuelle Array keine Nullen mehr hat - und gebe dann den Index dieses Arrays aus.
quelle
Japt , 7 Bytes
0-indiziert. Übernimmt die Eingabe als Array von Arrays.
Probier es aus
Erläuterung
Implizite Eingabe eines Arrays
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
) über dieU
Rückgabe der Anzahl der wahrheitsgemäßen (von Null verschiedenen) Elemente in jedem Unterarray. Ordnen Sie dieses neue Array implizit zuU
.[2,1,3,2,0]
Reduzieren Sie das
r
Array ( ),U
indem Sie den aktuellen Wert und das aktuelle Element auf den höchsten Wert bringen.3
Rufen Sie den ersten Index ab, in
U
dem das Element diesem Wert entspricht, und geben Sie das Ergebnis implizit aus.2
quelle