Dada una lista con listas anidadas en su interior, devuelva la lista con los elementos anidados de las listas anidadas.
Entrada
La lista tendrá, como máximo, listas anidadas de 4 profundidades. Cuente todos los 0 dentro de la entrada como un espacio nulo.
Salida
Imprima individualmente cada artículo. No imprima el resultado como una lista. Puede separar cada elemento con cualquier tipo de espacio en blanco.
Casos de ejemplo
[[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
El código más corto gana.
[[[[5]]]]
, ¿verdad?[[[[5]]]]
funciona en tio.run/… pero no en tio.run/…Count all 0's within the input as a null space.
mediaignore zeros
Respuestas:
APL (10)
Explicación:
⍞~'[]'
: Entrada del usuario (⍞
) sin (~
) los caracteres'[]'
Esto da algo como
'1,2,0,2,3'
⍎
: Evalúa esta cadena. Sucede que,
es el operador de concatenación, por lo que ahora tenemos una lista:1 2 0 2 3
(las listas APL están separadas por espacios en blanco por defecto)0~⍨
: Elimine todos los números 0 de esta lista. (Es una lista de números, no de cadenas, por ahora, por lo que los ceros dentro de los números no se eliminan.fuente
Sed, 20 caracteres
La solución se basa en la expresión regular extendida POSIX.
Salida :
Editar : POSIX Basic Regular Expression ( solución de @clueless ), 19 caracteres :
fuente
s/[^0-9][^1-9]*/ /g
también funciona y no requiere expresiones regulares extendidas.Python, 45
w00, manejo de excepciones en golf!
fuente
d(input())
línea en el recuento de caracteres.Perl,
201613 caracteresEl
-l
cambio es necesario para preservar la nueva línea final en la salida.Aquí hay una versión alternativa que realmente funciona semánticamente con las listas (51 caracteres).
Ambos programas aprovechan la estipulación del problema de que "puede separar cada elemento con cualquier tipo de espacio en blanco", y reemplaza los ceros con espacios en blanco, en lugar de eliminarlos directamente.
fuente
K, 12
.
fuente
x^y
) así:{(,//x)^0}
o incluso{,/x^0}/
. Funciona en johnearnest.github.io/ok/index.htmlPerl
13, 14 caracteres :p
cuenta para un carácteruso:
fuente
p
interruptor en el recuento).Ruby, 38 caracteres.
Los números se imprimen separados por un salto de línea.
fuente
Golfscript 15
Entrada
Ejecutar desde la línea de comando, así:
(suponiendo que el
x.gs
archivo contiene el código presentado anteriormente).Tenga en cuenta que no hay comas (
,
) al definir las matrices; esa es la sintaxis de GolfscriptSalida
Cuando se emite el comando descrito en la sección Entrada , la salida es:
fuente
Python 3, 49 caracteres
Python 2, 58 caracteres
fuente
Japt , 5 bytes
Pruébalo
Explicación
Entrada implícita de matriz
U
. Acoplar la matriz conc
. Filtrarlof
para eliminar el0
s. Unirlo a una cadena usando espacios con¸
. Salida implícita de la cadena resultante.fuente
Java 10, 106 bytes
Entrada anidada
Object[]
, salida impresa en STDOUT.Pruébalo en línea.
46 bytes
Entrada y salida tanto como
String
.Pruébalo en línea.
fuente
C, 45 caracteres
Se supone que la entrada se proporciona en un área de memoria modificable señalada por
s
.fuente
01
(me parece legal). Y*s-49&&puts(s)
es más corto.Python,
99111 caracteresVersión anterior de 99 caracteres: falla cuando se incluyen solo listas con ceros:
d(l)
aplana recursivamente la listal
, mientras filtra los ceros y convierte los números en cadenas.fuente
a and b or c
lugar de Ca?b:c
, pero falla cuando seb
evalúa como falso (lista vacía en este caso).Scala, 42 caracteres
Tokenizó la cadena por no dígitos y no dígitos seguidos de cero.
fuente
Prólogo (79)
Introduce la lista como un término, por lo que debe poner un '.' después de la lista en la entrada.
En realidad, enumera el aplanamiento.
fuente
APL (Dyalog) , 4 bytes
Pruébalo en línea!
0~⍨
ceros eliminados de∊
la ε nlisted (aplanada) de datosfuente
Stax , 2 bytes
Ejecutar y depurarlo
$
se aplana.f
es filtrar valores de falsey e imprimir en líneas separadas.fuente
Scala 147:
Trabajando en listas reales, no en cadenas:
Ahora los datos de prueba:
fuente
bash: 29 caracteres
contando la línea 2 solo sin 'echo $ l |'. Prueba para 3 muestras:
fuente
Tcl , 47 bytes
Pruébalo en línea!
Suponiendo que 4 de profundidad es algo así
{{{{5}}}}
. Como no hay un ejemplo de tal cosa en los casos de prueba, puede ser algo así{{{5}}}
; ¡si es así puedo acortar mi código!Tcl , 66 bytes
Pruébalo en línea!
fuente
Pyth, 5 bytes
Banco de pruebas
fuente
R , 29 bytes
Pruébalo en línea!
unlist
convierte la lista en unatomic
vector
recursivo, por lo que solo necesitamos filtrar los elementos cero.fuente
JavaScript (Node.js) , 53 bytes
Pruébalo en línea!
fuente
Brachylog , 8 bytes
Pruébalo en línea!
Toma la entrada a través de la variable de entrada e imprime la salida separada por nuevas líneas. Por lo general, me quejaría del formato de salida, pero en realidad me ahorró un byte de una manera que no hubiera pensado de otra manera: poner
ẉ⊥
el final es más corto que envolverlo{}ᶠ
.Si los elementos de la lista no se limitan a ser enteros no negativos:
Brachylog , 11 bytes
Pruébalo en línea!
fuente
PHP , 70 bytes
Pruébalo en línea!
¡Esto no va a ser el más corto (ni el más largo), pero pensé que sería una oportunidad de usar
array_walk_recursive()
, que hasta hoy no puedo pensar en usarlo! Al menos debería poder manejar un nivel arbitrario de listas anidadas profundas.fuente
Wolfram Language (Mathematica) , 37 bytes
Pruébalo en línea!
fuente