Inspirado en Crear un muro binario
Dada una lista de enteros positivos, podemos escribirlos uno encima del otro, por [2, 6, 9, 4]ejemplo:
0010
0110
1001
0100
Podemos imaginar esto como un muro:
..#.
.##.
#..#
.#..
Sin embargo, esta es una pared muy débil, ¡y se ha derrumbado! Cada 1( #) cae hasta que toca el "suelo" u otro 1( #). Las 0s ( .s) están presentes en los puntos que dejó la 1s movida .
Esto se convierte en lo siguiente:
....
....
.##.
####
Lo que se traduce de nuevo a:
0000
0000
0110
1111
Que, como una lista de números, es [0, 0, 6, 15].
Otro caso de prueba
[10, 17, 19, 23]
Esto se convierte en:
01010
10001
10011
10111
que se convierte en:
00000
10011
10011
11111
traduciendo de nuevo a:
[0, 19, 19, 31]
Reto
Dada una lista de enteros positivos, aplique esta transformación a la lista. Entrada / Salida como listas de enteros positivos en cualquier formato razonable. Se aplican lagunas estándar.
Este es un código de golf , por lo que gana la respuesta más corta en bytes.
fuente

Respuestas:
MATL , 4 bytes
Pruébalo en MATL Online
Explicación
fuente
Python , 68 bytes
Pruébalo en línea!
fuente
JavaScript (ES6), 50 bytes
Explicación: Supongamos que dos filas de la pared fueran así:
El resultado debe ser este:
En otras palabras, la primera fila se convierte en el AND de las dos filas y la segunda fila se convierte en el OR de las dos filas. Esto solo necesita repetirse suficientes veces para que todos los bits caigan al fondo.
fuente
Jalea , 9 bytes
Pruébalo en línea!
fuente
Japt , 16 bytes
Pruébalo en línea! usando la
-Qbandera para formatear el resultado de la matriz.Explicación
fuente
mì2 z3 mn z mì2nulllugar de espacios. Entonces eso no parece funcionar. Ynullse ordena a la derecha de la1s, a diferencia de los espacios, que se ordenan a la izquierda.Mathematica, 64 bytes
 es
\[Transpose]Esto convierte la entrada (una lista de números) en una lista de listas de dígitos, la convierte en una matriz cuadrada, la transpone, ordena las filas para que el 1 "caiga" al fondo, se transpone de nuevo, luego se convierte de nuevo en números .
fuente
Python 3.5 , 60 bytes
Pruébalo en línea!
Toma entrada como
f(2, 6, 9, 4). Asume que la entrada no está vacía. Utiliza muchas tuplas para desempacar .fuente
Octava,
2925 bytes4 bytes guardados gracias a @Stewie
fuente
de2bi/bi2deahorra 4 bytes en octava. Funciona en octave-online.net.J , 13 bytes
Pruébalo en línea!
Explicación
fuente
<convert from binary> <transpose> <sort each row> <transpose> <convert to binary> M, donde las dos primeras funciones son solo las inversas de las dos últimas.05AB1E , 9 bytes
Pruébalo en línea!
Algoritmo algo diferente del de Magic.
fuente
ζ, maldición. Borrado el mío, toma mi +1.Dyalog APL,
242119 bytesPruébalo en línea! (modificado para que TryAPL lo acepte como válido)
¿Cómo?
⎕entrada evaluada (las matrices están separadas por espacios)2⊥⍣¯1⊢convierte cada uno de los argumentos a binario (transpuesto de lo que está en la pregunta)↓convierte una matriz 2D en un vector de vectores{⍵[⍋⍵]}¨ordena cada uno de los elementos del vector↑convierte el vector de vectores en una matriz 2D nuevamente2⊥convertir de binario (dado que lo transpone, llegamos al resultado correcto)fuente
Dyalog APL (23 caracteres)
Ejemplo
Gracias a Zacharý por corregirme en este caso.
fuente
(⊥⍣¯1)⍵con⊥⍣¯1⊢⍵. Además, no creo que necesite la especificación del eje en split (↓[1]=>↓).⊥⍣¯1Realmente necesita ser un incorporado). Y gracias por tener mi nombre de usuario correcto.JavaScript,
127125bytesPruébalo en línea
-2 bytes gracias a Cows quack
fuente
(1<<c)&epuede convertirse2**c&ePython 2, 142 bytes
... y aún jugando al golf ... con suerte –– ¡Se agradece cualquier ayuda!
Una gran parte de esto es para rellenar los números con ceros.
Más legible:
Esto crea una matriz de representaciones de cadenas binarias, las rellena, gira 90º en el sentido de las agujas del reloj, ordena cada fila, la gira 90º hacia atrás y luego crea números enteros fuera de cada fila.
fuente