Dada una lista ordenada de números (posiblemente con ceros a la izquierda), organice los números verticalmente, luego deje que todos los ceros caigan hasta el fondo y todos los voladizos caigan en la ranura abierta más inferior. Salida de los enteros resultantes, eliminando los ceros a la izquierda.
Ejemplo trabajado
Digamos que nos dieron lo siguiente como entrada:
['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']
Primero lo arreglamos verticalmente:
0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149
Luego, columna por columna, coloque los ceros "a través" de los otros números para que descansen en la parte inferior y "empuje" los otros números hacia arriba. Esto daría como resultado que los primeros dos pasos sean los siguientes:
2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^
2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
^
2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
^
...
2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
^
Luego, suelte todos los voladizos como si la gravedad los empujara hacia abajo como arena.
2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
^
2391312941295
3285245381245 598
14232323525458158
10915991001181290
000035000004951
^
...
2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
^
Finalmente, genere estos números, eliminando los ceros a la izquierda. Para nuestro ejemplo trabajado, salida:
[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]
Para otro ejemplo, suponga la entrada de [1234000,12345678,1234,12340608,12341234]
.
1234000
12345678
1234
12340608
12341234
Suelta los ceros:
1234
12345678
1234163
12340208
12340004
Suelta los dígitos sobresalientes restantes:
1234
1234567
12341638
12340208
12340004
La salida es [1234, 1234567, 12341638, 12340208, 12340004]
.
Reglas
- La entrada puede contener ceros a la izquierda. La salida no debe contener ceros a la izquierda.
- Si corresponde, puede suponer que la entrada / salida se ajustará al tipo entero nativo de su idioma.
- La entrada y salida se pueden dar por cualquier método conveniente .
- Un programa completo o una función son aceptables. Si es una función, puede devolver el resultado en lugar de imprimirlo.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
fuente
14232323525458159
a14232323525458160
)and all overhangs drop to the bottom-most open slot
fue una buena solución a mi desafío roto :).. 1234
es muy diferente a la salida1234
.Respuestas:
Jalea , 8 bytes
Pruébalo en línea!
Cómo funciona
fuente
Sort each row of the transpose by logical NOT, pushing 0's to the end.
¿Se garantiza que sea un tipo estable?sorted
, que está garantizado para ser estable.ṚZẸÞ€ZṚḌ
:)05AB1E , 11 bytes
Pruébalo en línea!
fuente
†
usado antes, agradable.Casco , 12 bytes
Pruébalo en línea!
Explicación
fuente
Python 2 , 118 bytes
Pruébalo en línea!
Versión sin golf
Las dos primeras líneas son equivalentes a
map(lambda*a...)
, el comportamiento predeterminado si semap
debe completar conNone
s si una lista es más corta que la otra.e>'0'
es equivalente acell != '0' and cell != None
, porque si es cualquier dígito (1 ~ 9) tendrá un punto de código más alto, y (cualquier) cadena es más alta queNone
.fuente
Pyth , 11 bytes
Pruébalo en línea!
fuente
Retina 0.8.2 ,
9592 bytesPruébalo en línea! Explicación: La primera etapa elimina los dígitos sobresalientes ya que esto hace que sea más fácil (editar: aún más fácil para un ahorro de 3 bytes) que la segunda etapa elimine los ceros. La tercera etapa elimina los ceros iniciales.
fuente
Ruby , 104 bytes
Pruébalo en línea!
Explicación
fuente
APL (Dyalog Unicode) , SBCS de 26 bytes
Función de prefijo tácito anónimo que toma una matriz de caracteres como argumento y devuelve una lista de números.
Pruébalo en línea!
⍉
transponer la entrada (ya que necesitamos trabajar en las columnas)' 0'(
...)⍤1⍨
aplicar la siguiente función tácito a cada fila (sub-array de rango tensor 1) con' 0'
como derecho argumento (⍨
permutas de los argumentos):∩
intersección de la fila y∘
y⊃
el primero de' 0'
(es decir
row∩' '
, todos los espacios de cada fila),
seguido por…~
la diferencia establecida(es decir
row~' 0'
, la fila pero sin espacios y ceros),
seguido por…∩
intersección de la fila y∘
y⊃
la primera∘
de⌽
la inversa' 0'
(es decir
row∩'0'
, todos los ceros de cada fila)⍎⍤1
evaluar cada fila (sub-matriz de tensor rango 1)∘
de⍉
la transposición de eso (es decir, cada columna; las filas de entrada ahora modificadas)fuente
⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉
(⎕io←0
) Puede ser más fácil de jugar, por ejemplo, no⍋
⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
Perl 5 , -p0 77 bytes
Conteo de estilo antiguo: 79 bytes (
+2
parap0
)Dé entrada como líneas en STDIN sin nueva línea final (de lo contrario, todo se ve como saliente y la nueva línea final sube a la parte superior cuando la cadena de entrada se bloquea). P.ej:
Fue un poco complicado hacer que el saliente cayera y
0
cayera en una expresión regularPruébalo en línea!
fuente
Ruby , 203 bytes
Pruébalo en línea!
Una lambda que acepta un conjunto de cadenas y devuelve un conjunto de ints. Siento que me falta algo; esto se siente enorme: /
fuente
APL (Dyalog Classic) ,
242322 bytesPruébalo en línea!
basado en la solución de Adam
fuente