C'est simple: prenez une matrice d'entiers en entrée et sortez l'index de la ligne avec le plus d'éléments non nuls. Vous pouvez supposer qu'il n'y aura qu'une seule ligne avec le plus d'éléments non nuls.
Cas de test:
Ceux-ci sont indexés 1, vous pouvez choisir si vous voulez 0 ou 1 indexé.
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
Ā
au lieu deÄ0›
pour -2.R , 31 octets
renvoie une fonction anonyme qui prend une matrice:
rowSums
additionne les lignes, en!m
transformant 0 en 1 et tout le reste en 0.which.min
renvoie l'index basé sur 1 de la première ligne qui contient la somme minimale (c'est-à-dire quelle ligne a le moins de zéros).Essayez-le en ligne!
la source
which.min()
car les éléments non nuls deviendront FAUX avec!m
.Haskell,
464241 octetsEssayez-le en ligne!
Comment ça marche
la source
C #, 69 octets
Prend une
List<int[]>
entrée et renvoie le résultat indexé 0.la source
En fait , 9 octets
Essayez-le en ligne!
Explication:
la source
Python 3,
5448 octetsRasé de 6 octets. Ancienne solution:
la source
APL (Dyalog) , 11 octets
Essayez-le en ligne!
0≠⎕
Matrice booléenne où non nul+/
somme des lignes(
appliquer la fonction tacite suivante à la liste des sommes⌈/
le maximum⍳
indice⊢
dans la liste des arguments)
la source
Brachylog , 17 octets
Essayez-le en ligne!
la source
05AB1E , 5 octets
Essayez-le en ligne!
0 indexé.
la source
Gelée , 5 octets
Essayez-le en ligne!
1 indexé.
Tant de versions à 5 octets ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...la source
Haskell -
6968 octetsUn octet enregistré grâce à Siracusa!
Les lignes sont indexées zéro
Usage
Essayez-le en ligne!
la source
g=filter
vous fait gagner un octetm y=length$takeWhile(<maximum y)y
et raccourcirlength
au lieu defilter
Clojure, 64 octets
Celui-ci fonctionne également avec des nombres négatifs en entrée, heureusement de la même longueur que l'original:
Original:
la source
pos?
n'est donc pas correctq / kdb +,
251716 octetsSolution:
Exemple:
Explication:
Remarques:
Le problème est assez simple, cette solution semble trop compliquée.Dès que j'ai appuyé sur soumettre, j'ai réalisé l'erreur de mes voies.Prime:
Voici une solution k qui pèse
16 à109 octets - presque exactement la même chose mais 7 octets plus court car nous n'avons pas besoin de crochets lors de l'utilisation des k intégrés, et par conséquent certains deviennent plus courts que les mots clés q ( par exemple+/
poursum
(serait(+/)
en q)).la source
CJam , 11 octets
Essayez-le en ligne!
-2 grâce à Challenger5 .
la source
{0fe=_:e>#}
>
devrait être à la<
place ... merci quand même. :)PHP , 58 octets
0 indexé
Essayez-le en ligne!
la source
V , 18 octets
Essayez-le en ligne!
Contrairement à la plupart des réponses V, il s'agit d'un indice 0.
Pas mal pour une langue sans support numérique!
;P
J'ai également découvert que la variante majuscule de la commande count , c'est-à-
Ø
dire est horriblement cassée.la source
Python 3 , 92 octets
Triez d'abord chaque ligne de telle sorte que les entrées
[0,0,..,0,x,x,x]
trient ensuite la matrice entière, de sorte que la dernière entrée dey
la ligne que nous recherchons. La copiey=x[:]
est nécessaire, car.sort()
fonctionne sur place, donc nous ne connaissons pas l'index d'origine après le tri.J'apprécie toute aide pour jouer au golf cette solution plus loin. La plupart des octets sont perdus en raison des espaces dans chaque ligne. Le code lui-même ne fait que 68 octets de long.
Essayez-le en ligne!
la source
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 octets0
s et utilisermin()
au lieu demax()
input()
au lieu dedef
lambda
et hash-mapEssayez-le en ligne!
la source
min
avec lekey
paramètreJavaScript (ES6), 62 octets
0 indexé. Prend un tableau 2D en entrée.
la source
filter
ce que "filtrer" les zéros implicitement?filter
, en gardant à l'esprit que0
c'est falsey.filter
juste s'assurer.Gelée , 7 octets
Essayez-le en ligne!
la source
Pyth, 6 octets
Manifestation
Au lieu de trouver la ligne avec le plus d'éléments non nuls, je trouve la ligne avec le moins d'éléments zéro.
/D0
: Order (D
) par count (/
) de zéros (0
). Implicitement appliqué àQ
l'entrée.h
: Prenez le premier élément et le minimum.xQ
: Recherchez l'index (x
) dans l'entrée (Q
) de cet élément.la source
Rétine , 46 octets
Essayez-le en ligne!
0 indexé. Fonctionne avec des entiers positifs et négatifs (et 0). Ne suppose pas de zéros non significatifs.
la source
Java 8, 145 octets
Moche, mais ça marche ..
Explication:
Essayez-le ici.
la source
Java (OpenJDK 8) ,
119101 octetsEssayez-le en ligne!
Java, ce doux langage verbeux :)
Merci d'avoir économisé 18 octets, @KevinCruijssen;)
la source
j
autres parties plus longues commej=m[i].length,
etm[i][j]
comme ceci: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 octets )JavaScript (ES6), 51 octets
où
m
est un tableau 2D et l'index retourné est indexé 0Cas de test:
Afficher l'extrait de code
la source
Java 8, 100 octets
Explication
La puissance des listes et des flux! (et sans les importations, pour démarrer!)
Décomposons ce petit lambda en morceaux:
Nous transformons notre liste de listes (la matrice de la question) en un flux et parcourons chaque élément, en supprimant tous ces zéros embêtants de chaque sous-liste. Nous devons renvoyer explicitement la sous-liste à chaque fois ici, car
Stream.map()
convertit chaque objet du flux en tout ce que le mappage renvoie, et nous ne voulons pas les changer.Nous parcourons nos sous-listes nouvellement remises à zéro et vérifions simplement leur taille les unes à côté des autres, ce qui nous donne la plus grande sous-liste. Ceci
.get()
est dû au fait queStream.max()
renvoie un Facultatif, nécessitant cet appel de fonction supplémentaire.Nous prenons cette plus grande sous-liste et trouvons où elle se trouve dans la liste principale, en nous donnant notre résultat!
Remarques
Cela casse si la liste externe est vide, mais je prends
pour impliquer qu'il y aura toujours au moins une ligne. Corrige moi si je me trompe.
la source
Python 2 , 51 octets
Essayez-le en ligne!
Cette version supprime progressivement les 0 dans les tableaux, imprimant l'index en cours et se bloque lorsqu'il n'y a plus de zéros à supprimer. Le dernier index imprimé est la réponse.
Python 2 , 57 octets
Essayez-le en ligne!
Je voulais essayer une approche différente de ce qui est déjà là. Donc, ici, j'itère récursivement sur le tableau en supprimant un 0 à la fois jusqu'à ce que le tableau actuel ne contienne plus de zéros - puis affiche l'index de ce tableau.
la source
Japt , 7 octets
0 indexé. Prend l'entrée comme un tableau de tableaux.
Essaye-le
Explication
Entrée implicite du tableau
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
) surU
renvoyant le nombre d'éléments véridiques (non nuls) dans chaque sous-tableau. Attribuez implicitement ce nouveau tableau àU
.[2,1,3,2,0]
Tableau Reduce (
r
)U
en obtenant la plus grande de la valeur actuelle et de l'élément courant.3
Récupère le premier index dans
U
lequel l'élément est égal à cette valeur et affiche implicitement le résultat.2
la source