Dada uma lista com listas aninhadas dentro dela, retorne a lista com os itens das listas aninhadas aninhados.
Entrada
A lista terá, no máximo, listas aninhadas em quatro profundidades. Conte todos os 0 na entrada como um espaço nulo.
Resultado
Imprima individualmente cada item. Não imprima a saída como uma lista. Você pode separar cada item com qualquer tipo de espaço em branco.
Casos de exemplo
[[1, 0], [2, 0], [2, 3]] -> 1 2 2 3
[[[4, 5, 8]], [[5, 6, 20]], [[1, 20, 500]]] -> 4 5 8 5 6 20 1 20 500
[[[1, 0], [0, 0], [0, 0]], [[1, 0], [1, 2], [2, 0]], [[2, 0], [0, 0], [0, 0]]] -> 1 1 1 2 2 2
O código mais curto vence.
[[[[5]]]]
, certo?[[[[5]]]]
funciona em tio.run/… mas não em tio.run/…Count all 0's within the input as a null space.
médiaignore zeros
Respostas:
APL (10)
Explicação:
⍞~'[]'
: Entrada do usuário (⍞
) sem (~
) os caracteres'[]'
Isso fornece algo como
'1,2,0,2,3'
⍎
: Avalie esta sequência. Acontece que,
é o operador de concatenação, agora temos uma lista:1 2 0 2 3
(as listas APL são separadas por espaços em branco por padrão)0~⍨
: Remova todos os números 0 desta lista. (Agora é uma lista de números, não de cadeias, portanto os zeros nos números não são removidos.fonte
Sed, 20 caracteres
A solução é baseada na expressão regular estendida POSIX.
Saída :
Edit : Expressão regular básica POSIX ( solução da @clueless ), 19 caracteres :
fonte
s/[^0-9][^1-9]*/ /g
também funciona e não requer expressões regulares estendidas.Python, 45
w00, tratamento de exceções no golfe!
fonte
d(input())
linha na contagem de caracteres.Perl,
201613 caracteresA
-l
opção é necessária para preservar a nova linha final na saída.Aqui está uma versão alternativa que realmente funciona com as listas semanticamente (51 caracteres).
Ambos os programas aproveitam a estipulação do problema de que "pode separar cada item com qualquer tipo de espaço em branco" e substitui os zeros por espaços em branco, em vez de removê-los completamente.
fonte
K, 12
.
fonte
x^y
) da seguinte forma:{(,//x)^0}
ou mesmo{,/x^0}/
. Funciona em johnearnest.github.io/ok/index.htmlPerl
13, 14 char dit:p
count for one charuso:
fonte
p
opção na contagem).Ruby, 38 caracteres
Os números são impressos separados por uma quebra de linha.
fonte
Golfscript 15
Entrada
Execute a partir da linha de comando, assim:
(supondo que o
x.gs
arquivo contenha o código apresentado acima).Observe que não há vírgulas (
,
) ao definir as matrizes; essa é a sintaxe GolfscriptResultado
Quando o comando descrito na seção Entrada é emitido, a saída é:
fonte
Python 3, 49 caracteres
Python 2, 58 caracteres
fonte
Japonês , 5 bytes
Teste-o
Explicação
Entrada implícita da matriz
U
. Achate a matriz comc
. Filtre comf
para remover os0
s. Associe-o a uma string usando espaços com¸
. Saída implícita da sequência resultante.fonte
Java 10, 106 bytes
Entrada como aninhada
Object[]
, saída impressa em STDOUT.Experimente online.
46 bytes
Entrada e saída tanto como
String
.Experimente online.
fonte
C, 45 caracteres
Pressupõe que a entrada seja dada em uma área de memória modificável apontada por
s
.fonte
01
(parece legal para mim). E*s-49&&puts(s)
é mais curto.Python,
99111 caracteresVersão anterior de 99 caracteres - falha quando listas apenas com zeros estão incluídas:
d(l)
recursivamente nivela a listal
, enquanto filtra zeros e converte números em seqüências de caracteres.fonte
a and b or c
vez de C'sa?b:c
, mas falha quandob
avalia como false (lista vazia nesse caso).Scala, 42 caracteres
Tokenizou a sequência por dígitos e por dígitos seguidos de zero.
fonte
Prolog (79)
Ele insere a lista como um termo, então você precisa colocar um '.' após a lista na entrada.
Na verdade, lista o achatamento.
fonte
APL (Dyalog) , 4 bytes
Experimente online!
0~⍨
zeros removidos de∊
o ε nlisted dados (achatada)fonte
Stax , 2 bytes
Execute e depure
$
está achatado.f
é filtrar valores falsey e imprimir em linhas separadas.fonte
Scala 147:
Trabalhando em listas reais, não em strings:
Agora os dados do teste:
fonte
bash: 29 caracteres
contando a linha 2 apenas sem 'eco $ l |'. Teste para 3 amostras:
fonte
Tcl , 47 bytes
Experimente online!
Assumindo 4-deep é algo parecido
{{{{5}}}}
. Como não há exemplo disso nos casos de teste, pode ser algo como{{{5}}}
; se for, posso diminuir meu código!Tcl , 66 bytes
Experimente online!
fonte
Pitão, 5 bytes
Suíte de teste
fonte
R , 29 bytes
Experimente online!
unlist
converte a lista em umatomic
vector
recursivamente, então precisamos filtrar os elementos zero.fonte
JavaScript (Node.js) , 53 bytes
Experimente online!
fonte
Braquilog , 8 bytes
Experimente online!
Leva a entrada através da variável de entrada e imprime a saída separada por novas linhas. Normalmente, eu reclamava do formato de saída, mas na verdade ele me salvou um byte de uma maneira que eu não pensaria de outra forma - colocar
ẉ⊥
o final é mais curto do que envolvê-lo{}ᶠ
.Se os itens da lista não estiverem restritos a números inteiros não negativos:
Braquilog , 11 bytes
Experimente online!
fonte
PHP , 70 bytes
Experimente online!
Isso não será o mais curto (nem o mais longo), mas achei que seria uma chance de usar
array_walk_recursive()
, que até hoje não consigo pensar em usá-lo! Pelo menos, ele deve ser capaz de lidar com listas aninhadas profundas de nível arbitrário.fonte
Wolfram Language (Mathematica) , 37 bytes
Experimente online!
fonte