Essa é simples: use uma matriz de números inteiros como entrada e faça a saída do índice da linha com o maior número de elementos diferentes de zero. Você pode supor que haverá apenas uma linha com mais elementos diferentes de zero.
Casos de teste:
Estes são indexados em 1, você pode escolher se deseja indexar 0 ou 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
Ā
vez deÄ0›
para -2.R , 31 bytes
retorna uma função anônima que leva uma matriz:
rowSums
soma as linhas,!m
transformando 0 em 1 e todo o resto em 0.which.min
retorna o índice baseado em 1 da primeira linha que contém a soma mínima (ou seja, qual linha possui o menor número de zeros).Experimente online!
fonte
which.min()
já que elementos diferentes de zero se tornarão FALSE!m
.Haskell,
464241 bytesExperimente online!
Como funciona
fonte
C #, 69 bytes
Pega a
List<int[]>
como entrada e retorna o resultado indexado em 0.fonte
Na verdade , 9 bytes
Experimente online!
Explicação:
fonte
Python 3,
5448 bytesRaspou 6 bytes. Solução antiga:
fonte
APL (Dyalog) , 11 bytes
Experimente online!
0≠⎕
Matriz booleana onde diferente de zero+/
soma de linhas(
aplique a seguinte função tácita à lista de somas⌈/
o máximo⍳
índice⊢
na lista de argumentos)
fonte
Braquilog , 17 bytes
Experimente online!
fonte
05AB1E , 5 bytes
Experimente online!
Indexado a 0.
fonte
Gelatina , 5 bytes
Experimente online!
1 indexado.
Tantas versões de 5 bytes ...
TL$€M
,T€L€M
,TJ$€M
,T€J€M
,¬¬Ṣ€M
,ṠAṢ€M
,ṠAS€M
,AṠṢ€M
,AṠS€M
,¬ċ€0M
, ...fonte
Haskell -
6968 bytesGuardado um byte graças a Siracusa!
As linhas são zero indexadas
Uso
Experimente online!
fonte
g=filter
economiza um bytem y=length$takeWhile(<maximum y)y
e encurtandolength
em vez defilter
Clojure, 64 bytes
Este também funciona com números negativos na entrada, felizmente o mesmo tamanho que o original:
Original:
fonte
pos?
não é corretoq / kdb +,
251716 bytesSolução:
Exemplo:
Explicação:
Notas:
O problema é bastante direto, essa solução parece excessivamente complicada.Assim que apertei enviar, percebi o erro dos meus caminhos.Bônus:
Aqui está uma solução que pesa
16109 bytes - quase exatamente o mesmo, mas 7 bytes mais curto devido ao fato de não precisarmos de colchetes ao usar os k built-ins e, como resultado, alguns ficam mais curtos que as palavras-chave q ( por exemplo,+/
parasum
(estaria(+/)
em q)).fonte
CJam , 11 bytes
Experimente online!
-2 graças a Challenger5 .
fonte
{0fe=_:e>#}
>
deve ser, em<
vez disso ... obrigado de qualquer maneira. :)PHP , 58 bytes
0-Indexado
Experimente online!
fonte
V , 18 bytes
Experimente online!
Diferentemente da maioria das respostas em V, isso é indexado em 0.
Nada mal para um idioma sem suporte numérico!
;P
Também descobri que a variante maiúscula do comando count , ou seja
Ø
, está terrivelmente quebrada.fonte
Python 3 , 92 bytes
Primeiro, classifique cada linha de
[0,0,..,0,x,x,x]
modo que as entradas classifiquem toda a matriz, para que a última entraday
seja a linha que estamos procurando. A cópiay=x[:]
é necessária, pois.sort()
funciona no local, portanto, não sabemos o índice original após a classificação.Agradeço qualquer ajuda como jogar esta solução ainda mais. A maioria dos bytes é perdida devido aos espaços em branco em cada linha. O código em si tem apenas 68 bytes.
Experimente online!
fonte
def f(a):b=list(map(sorted,a));return b.index(sorted(b)[-1])
Python 2 ,
64 55 5248 bytes0
use emmin()
vez demax()
input()
vez dedef
lambda
e mapa de hashExperimente online!
fonte
min
com okey
parâmetroJavaScript (ES6), 62 bytes
Indexado a 0. Toma uma matriz 2D como entrada.
fonte
filter
implicitamente "filtro" zeros?filter
, lembrando que0
é falsey.filter
estava apenas certificando-se.Geléia , 7 bytes
Experimente online!
fonte
Pitão, 6 bytes
Demonstração
Em vez de encontrar a linha com mais elementos diferentes de zero, encontro a linha com menos elementos.
/D0
: Ordene (D
) pela contagem (/
) de zeros (0
). Aplicado implicitamente aQ
entrada.h
: Pegue o primeiro e o mínimo elemento.xQ
: Encontre o índice (x
) na entrada (Q
) desse elemento.fonte
Retina , 46 bytes
Experimente online!
Indexado a 0. Funciona com números inteiros positivos e negativos (e 0). Não assume zeros à esquerda.
fonte
Java 8, 145 bytes
Feio, mas funciona ..
Explicação:
Experimente aqui.
fonte
Java (OpenJDK 8) ,
119101 bytesExperimente online!
Java, essa doce linguagem detalhada :)
Obrigado por salvar 18 bytes, @KevinCruijssen;)
fonte
j
e outras partes mais longas, comoj=m[i].length,
em[i][j]
como isto: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
onde
m
é uma matriz 2D e o índice retornado é indexado em 0Casos de teste:
Mostrar snippet de código
fonte
Java 8, 100 bytes
Explicação
O poder das listas e córregos! (e sem as importações, para inicializar!)
Vamos dividir esse pequeno lambda em pedaços:
Transformamos nossa lista de listas (a matriz na pergunta) em um fluxo e analisamos cada elemento, removendo todos os zeros traquinas de cada sub-lista. Precisamos retornar explicitamente a sublist cada vez aqui, porque
Stream.map()
converte cada objeto no Stream para o que o mapeamento retornar, e não queremos alterá-los.Examinamos nossas sublistas recém-zeradas e simplesmente verificamos quão grandes elas são próximas uma da outra, obtendo para nós a maior sub-lista. O
.get()
é porque oStream.max()
retorna um opcional, exigindo que chamada de função extra.Nós pegamos a maior sublist e descobrimos onde ela está na lista principal, nos dando o nosso resultado!
Notas
Isso quebra se a lista externa estiver vazia, mas eu estou pegando
implicar que sempre haverá pelo menos uma linha. Corrija-me se eu estiver errado.
fonte
Python 2 , 51 bytes
Experimente online!
Essa versão remove os 0s progressivamente pelas matrizes, imprimindo o índice atual e trava quando não há mais zeros a serem removidos. O último índice impresso é a resposta.
Python 2 , 57 bytes
Experimente online!
Queria tentar uma abordagem diferente do que já está aqui. Então, aqui, eu iteramos recursivamente sobre a matriz, removendo um 0 de cada vez, até que a matriz atual não tenha mais zeros - e depois produzo o índice dessa matriz.
fonte
Japonês , 7 bytes
Indexado a 0. Recebe a entrada como uma matriz de matrizes.
Teste-o
Explicação
Entrada implícita da matriz
U
.[[0,4,1,0],[0,0,-6,0],[0,1,4,-3],[2,0,0,8],[0,0,0,0]]
Mapeie (
m
)U
retornando a contagem de elementos verdadeiros (diferentes de zero) em cada sub-matriz. Atribua implicitamente essa nova matriz aU
.[2,1,3,2,0]
Reduza (
r
) a matrizU
, obtendo o maior valor atual e o elemento atual.3
Obtenha o primeiro índice em
U
que o elemento é igual a esse valor e produz implicitamente o resultado.2
fonte