Este es simple: tome una matriz de enteros como entrada y envíe el índice de la fila con la mayoría de los elementos distintos de cero. Puede suponer que solo habrá una fila con la mayoría de los elementos distintos de cero.
Casos de prueba:
Estos están indexados en 1, puede elegir si desea 0 o 1 indexado.
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
Ā
lugar deÄ0›
para -2.R , 31 bytes
devuelve una función anónima que toma una matriz:
rowSums
suma las filas, con la!m
transformación de 0 a 1 y todo lo demás a 0.which.min
devuelve el índice basado en 1 de la primera fila que contiene la suma mínima (es decir, qué fila tiene la menor cantidad de ceros).Pruébalo en línea!
fuente
which.min()
ya que los elementos distintos de cero serán FALSOS con!m
.Haskell,
464241 bytesPruébalo en línea!
Cómo funciona
fuente
C #, 69 bytes
Toma a
List<int[]>
como entrada y devuelve el resultado indexado 0.fuente
En realidad , 9 bytes
Pruébalo en línea!
Explicación:
fuente
Python 3,
5448 bytesAfeitado de 6 bytes. Vieja solución:
fuente
APL (Dyalog) , 11 bytes
Pruébalo en línea!
0≠⎕
Matriz booleana donde no es cero+/
suma de filas(
aplicar la siguiente función tácita a la lista de sumas⌈/
el máximo⍳
índice⊢
en la lista de argumentos)
fuente
Brachylog , 17 bytes
Pruébalo en línea!
fuente
05AB1E , 5 bytes
Pruébalo en línea!
0 indexado.
fuente
Jalea , 5 bytes
Pruébalo en línea!
1 indexado.
Tantas versiones de 5 bytes ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...fuente
Haskell -
6968 bytes¡Salvado un byte gracias a Siracusa!
Las filas están indexadas a cero
Uso
Pruébalo en línea!
fuente
g=filter
te ahorra un bytem y=length$takeWhile(<maximum y)y
y acortar enlength
lugar defilter
Clojure, 64 bytes
Este también funciona con números negativos en la entrada, afortunadamente la misma longitud que el original:
Original:
fuente
pos?
que no es correctoq / kdb +,
251716 bytesSolución:
Ejemplo:
Explicación:
Notas:
El problema es bastante sencillo, esta solución se siente demasiado complicada.Tan pronto como presioné enviar, me di cuenta del error de mis formas.Prima:
Aquí hay una solución k que pesa
16109 bytes, casi exactamente lo mismo pero 7 bytes más cortos debido al hecho de que no necesitamos corchetes al usar los k incorporados, y como resultado algunos se vuelven más cortos que las palabras clave q ( por ejemplo+/
parasum
(estaría(+/)
en q)).fuente
CJam , 11 bytes
Pruébalo en línea!
-2 gracias a Challenger5 .
fuente
{0fe=_:e>#}
>
debería ser<
en su lugar ... gracias de todos modos. :)PHP , 58 bytes
0-indexado
Pruébalo en línea!
fuente
V , 18 bytes
Pruébalo en línea!
A diferencia de la mayoría de las respuestas V, esta está indexada en 0.
¡No está mal para un idioma sin soporte numérico!
;P
También he descubierto que la variante en mayúsculas del comando de conteo , es decir
Ø
, está horriblemente rota.fuente
Python 3 , 92 bytes
Primero ordene cada fila de modo que las entradas sean
[0,0,..,0,x,x,x]
luego la matriz completa, de modo que la última entraday
sea la fila que estamos buscando. La copiay=x[:]
es necesaria, ya que.sort()
funciona en el lugar, por lo tanto, no conocemos el índice original después de la clasificación.Agradezco cualquier ayuda sobre cómo golf esta solución más. La mayoría de los bytes se pierden debido a los espacios en blanco en cada línea. El código en sí solo tiene 68 bytes de longitud.
Pruébalo en línea!
fuente
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 bytes0
sy usa enmin()
lugar demax()
input()
lugar dedef
lambda
y hash-mapPruébalo en línea!
fuente
min
elkey
parámetroJavaScript (ES6), 62 bytes
0 indexado. Toma una matriz 2D como entrada.
fuente
filter
"filtra" implícitamente los ceros?filter
, teniendo en cuenta que0
es falsey.filter
solo me estaba asegurando.Jalea , 7 bytes
Pruébalo en línea!
fuente
Pyth, 6 bytes
Demostración
En lugar de encontrar la fila con la mayor cantidad de elementos distintos de cero, encuentro la fila con la menor cantidad de elementos cero.
/D0
: Ordenar (D
) por cuenta (/
) de ceros (0
). Aplicado implícitamente aQ
la entrada.h
: Tome el primer elemento y el mínimo.xQ
: Encuentre el índice (x
) en la entrada (Q
) de ese elemento.fuente
Retina , 46 bytes
Pruébalo en línea!
0 indexado. Funciona con enteros positivos y negativos (y 0). Asume que no hay ceros a la izquierda.
fuente
Java 8, 145 bytes
Feo, pero funciona ..
Explicación:
Pruébalo aquí
fuente
Java (OpenJDK 8) ,
119101bytesPruébalo en línea!
Java, ese dulce lenguaje detallado :)
Gracias por guardar 18 bytes, @KevinCruijssen;)
fuente
j
otras partes más largas comoj=m[i].length,
ym[i][j]
así: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
donde
m
es una matriz 2D y el índice devuelto está indexado a 0Casos de prueba:
Mostrar fragmento de código
fuente
Java 8, 100 bytes
Explicación
El poder de las listas y corrientes! (y sin las importaciones, para arrancar!)
Dividamos esta pequeña lambda en trozos:
Convertimos nuestra Lista de Listas (la matriz en la pregunta) en una Corriente y revisamos cada elemento, eliminando todos esos molestos ceros de cada sublista. Necesitamos devolver explícitamente la sublista cada vez aquí, porque
Stream.map()
convierte cada objeto en el flujo a lo que devuelve el mapeo, y no queremos cambiarlos.Revisamos nuestras sublistas recién descalificadas, y simplemente verificamos qué tan grandes son una al lado de la otra, consiguiendo la sublista más grande. Esto
.get()
se debe a queStream.max()
devuelve un Opcional, que requiere esa llamada de función adicional.¡Tomamos esa sublista más grande y encontramos dónde está en la Lista principal, dándonos nuestro resultado!
Notas
Esto se rompe si la lista externa está vacía, pero estoy tomando
para implicar que siempre habrá al menos una fila. Corrígeme si me equivoco.
fuente
Python 2 , 51 bytes
Pruébalo en línea!
Esta versión elimina 0s progresivamente a través de las matrices, imprime el índice actual y se bloquea cuando no hay más ceros para eliminar. El último índice impreso es la respuesta.
Python 2 , 57 bytes
Pruébalo en línea!
Quería probar un enfoque diferente de lo que ya está aquí. Así que aquí itero recursivamente sobre la matriz eliminando un 0 a la vez hasta que la matriz actual ya no tenga ceros, y luego obtengo el índice de esa matriz.
fuente
Japt , 7 bytes
0 indexado. Toma entrada como una matriz de matrices.
Pruébalo
Explicación
Entrada implícita de matriz
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Map (
m
) sobre laU
devolución del recuento de elementos verdaderos (distintos de cero) en cada subconjunto. Asigna implícitamente esta nueva matriz aU
.[2,1,3,2,0]
Reduce la
r
matriz ( )U
obteniendo el mayor valor actual y el elemento actual.3
Obtenga el primer índice
U
donde el elemento es igual a ese valor y genera el resultado implícitamente.2
fuente