Não é chato quando você está tirando uma foto, mas o fundo diminui a substância real da imagem? Eu diria que sim. Preciso saber quanto devo cortar para me livrar desse problema! Mas - como sempre - sou muito preguiçosa, então preciso de alguém para fazer isso por mim ...
Tarefa e Regras
Dada uma matriz binária que representa a imagem, imprima as dimensões (largura e altura) da menor sub-matriz que contém todos os s na matriz original. Uma sub-matriz é um bloco de entradas adjacentes da matriz original. Equivalentemente, é uma nova matriz formada pela sobreposição de um subconjunto de linhas adjacentes e um subconjunto de colunas adjacentes do original.
- É permitido levar também a largura e a altura da matriz.
- A entrada é garantida para conter pelo menos um .
- Você pode obter entrada e fornecer saída através de qualquer método padrão , observando que essas brechas são proibidas por padrão. Isso é código-golfe , então tente concluir a tarefa no mínimo de bytes que você puder gerenciar no seu idioma preferido.
Exemplo
Casos de teste
Entrada | Resultado [[0,1,0,0,0,1,0]] -> (5,1) ou (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0]] -> (3,2) ou (2,3) [[1,1,1,1], [0,0,0,0], [0,0,0,0], [1,0,0,0]] -> (4,4) [[0,0,0,0,0,0], [0,1,0,1,0,1], [0,0,0,0,0,0]] -> (5,1) ou (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,1,0,1,0], [ 0,0,0,0,0]] -> (3,3) [[0,0,0,0,0,0], [0,1,0,1,0,0], [0,1,1,0,1,1], [0,0,1, 0,1,0], [0,0,0,0,0,0]] -> (5,3) ou (3,5)
code-golf
array-manipulation
matrix
binary-matrix
Mr. Xcoder
fonte
fonte
Respostas:
MATL , 5 bytes
Experimente online! Ou verifique todos os casos de teste .
Explicação
fonte
APL (Dyalog Unicode) , SBCS de 10 bytes
Função de prefixo tácito anônimo.
Experimente online!
⍸
índices de 1s.(
…)
Aplique a seguinte função tácita a isso:⌊/
o mínimo (menor coordenada y e menor coordenada x )⌈/-
o máximo menos isso (isso nos dá o alcance)1+
um mais que (para ser inclusivo)fonte
Oitava ,
57 5645 bytesAqui
find
está o trabalho pesado: sãofinds
os índices de linha e coluna das entradas diferentes de zero. Então, apenas precisamos encontrar a diferença entre o máximo e o mínimo (mais um) para cada um deles separadamente.Obrigado @beaker e @AndrasDeak por -1 byte e @LuisMendo por -11 bytes!
Experimente online!
fonte
Python 2 ,
9286 bytesExperimente online!
fonte
Geléia , 7 bytes
Experimente online!
Como funciona
fonte
Python 2 ,
6355 bytes-8 com a ajuda de Vincent (use a matriz de entrada como uma matriz Numpy)
Uma função sem nome que aceita uma matriz Numpy 2D de números inteiros (pol
{0,1}
) que retorna uma lista de números inteiros[width,height]
,.Experimente online!
Versão não numpy em 63 bytes (aceitando uma lista de listas de números inteiros em
{0,1}
):Experimente online!
Quão?
Dada uma matriz,
a
,for
cada (v
) da transposição,zip(*a)
ea
em si encontramos a altura necessária (dado a transposta esta é a largura).O mapeamento
max
entrev
produz uma lista de zeros e uns, representando se cada linha dev
contém algum. A representação de string desta lista é encontrada usando backticks (`...`
), isso fornece uma string com um à esquerda[
, depois os zeros e os delimitados por,
(vírgula + espaço). Nós dividimos essa string iniciando no índice um em etapas de três usando[1::3]
uma string apenas de zeros e uns, o que nos permite usar a função stringstrip
para remover os zeros externos (strip('0')
).Por exemplo:
fonte
Retina 0.8.2 , 83 bytes
Experimente online! Explicação:
Exclua as linhas zero à esquerda e à direita.
Remova todos os
0
s nas linhas acima da última. Remova todos os1
dois, mas mude o dígito abaixo na próxima linha para a1
nesse caso. Este bit a bit ou são as linhas juntas.Conte o número de linhas como o número de novas linhas mais 1 e o número de colunas como o número de dígitos entre o primeiro e o último 1.
fonte
J , 31 bytes
Experimente online!
Explicação:
fonte
q / kdb +, 16 bytes
fonte
Mathematica, 34 bytes
Função pura. Pega uma lista aninhada de números inteiros como entrada e retorna uma lista de dois números inteiros (a altura seguida pela largura) como saída. O caractere Unicode é U + F3C7 para
\[Transpose]
.fonte
R ,
48bytes 46Experimente online!
-2 bytes salvos por Giuseppe.
fonte
05AB1E ,
119 bytes-2 bytes graças a @ Mr.Xcoder .
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
ζ‚Oε0Û0Üg
economiza 2 bytes.Geléia , 9 bytes
Experimente online!
fonte
Haskell , 76 bytes
Experimente online!
fonte
Japonês,
1615 bytesExperimente ou execute todos os casos de teste
Explicação
fonte
Ruby , 60 bytes
Experimente online!
fonte