Desafío:
Tome una lista, L que contenga enteros positivos como entrada:
3 5 2 1 6
y crea una matriz donde la enésima columna contiene el vector 1: L (n) , donde las filas más cortas se rellenan con ceros.
Casos de prueba:
3 5 2 1 6
-----------------
1 1 1 1 1
2 2 2 0 2
3 3 0 0 3
0 4 0 0 4
0 5 0 0 5
0 0 0 0 6
1
-
1
1 2 3 4 3 2 1
-------------------------
1 1 1 1 1 1 1
0 2 2 2 2 2 0
0 0 3 3 3 0 0
0 0 0 4 0 0 0
Reglas:
- Formatos opcionales de entrada y salida.
- La lista de listas es un formato de salida aceptable
- La matriz debe ser lo más pequeña posible (no puede rellenarla con más ceros de los necesarios)
- El código más corto en cada idioma gana
- Las explicaciones son altamente recomendables
Respuestas:
R ,
4038 bytesPruébalo en línea!
Explicación:
outer
aplica su tercer argumento (la función) a todas las combinaciones de elementos de sus dos primeros argumentos, generando una matriz deTRUE
yFALSE
donde cada columna tieneTRUE
donde1:max(l)
es menor o igual que el elemento correspondiente del
, por ejemplo, dondel=c(3,5,2,1,6)
:Luego, suponiendo que la matriz resultante es
A
, entoncesA*m
->A[i,j]=A[i,j]*i
que coaccionaTRUE
a 1 yFALSE
a 0, produciendo el resultado deseado.fuente
function(l)
conl=scan();
print
para que perdiera esos bytes.source(...,echo=TRUE)
y leer stdin como un programa completo, si tiene una sugerencia alternativa, sopesar allí, pero hasta donde sé, eso es lo más cerca que tenemos a un consenso de R sobre programas completos y se destaca por el momento.MATL , 8 bytes
Pruébalo en línea!
Explicación
fuente
Python 3 , 54 bytes
Pruébalo en línea!
fuente
Mathematica, 20 bytes
Contiene U + F3C7 (
Transpose
función incorporada de Mathematica )Pruébalo en Wolfram Sandbox
Uso
Explicación
fuente
Octava , 26 bytes
Función anónima que ingresa un vector de fila y genera una matriz.
Pruébalo en línea!
Explicación
Considere la entrada
x = [3 5 2 1 6]
. Este es un vector de fila de tamaño 1 × 5.1:max(x)
da el vector fila[1 2 3 4 5 6]
, que se asigna a la variabley
.La transposición de eso, es decir, el vector de columna
[1; 2; 3; 4; 5; 6]
, se<=
compara (elemento-sabio con difusión) con la entrada[3 5 2 1 6]
. El resultado es la matriz 6 × 5Finalmente, multiplicando (elemento-sabio con difusión) por el vector de columna
[1; 2; 3; 4; 5; 6]
, obtenido comoy
transpuesto, da el resultado deseado:fuente
05AB1E , 4 bytes
Pruébalo en línea! o como un conjunto de pruebas bien formateado
fuente
Cáscara , 4 bytes
Devuelve una lista de listas
Pruébalo en línea!
Explicación
fuente
Pyth , 6 bytes
Pruébalo aquí! o Verifique todos los casos de prueba (con letra bonita)!
Explicación
Una versión de transposición no incorporada sería :
Esto funciona de la siguiente manera:
fuente
Jalea , 3 bytes
Pruébalo en línea!
Explicación
fuente
En realidad , 17 bytes
Pruébalo en línea!
Explicación:
fuente
Pyke , 3 bytes
Esto usa la nueva característica de Pyke, codificaciones hexadecimales ... ¡La mejor parte es que vinculamos a Jelly! Bytes sin procesar:
Pruébalo aquí!
El equivalente ASCII-Pyke sería de 4 bytes :
¿Cómo?
Aquí hay una versión impresa bonita con ASCII, y aquí hay una con codificaciones hexadecimales.
fuente
Perl 6 , 39 bytes
Intentalo
Expandido:
Tenga en cuenta que
zip
termina una vez que se agota la lista de entrada más corta.fuente
C # , 136 bytes
Datos
Int32[]
i
Una matriz de entradasInt32[,]
Una matriz bidimensional.Golfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
136 bytes
- Solución inicial.Notas
fuente
C (gcc) , 142 bytes
Pruébalo en línea!
fuente
Java 10, 115 bytes
Explicación:
Pruébalo en línea.
fuente
Perl 5 , 62 + 1 (
-a
) = 63 bytesPruébalo en línea!
fuente
Protón , 38 bytes
Pruébalo en línea!
fuente
Añadir ++ , 37 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 55 bytes
Pruébalo en línea!
JavaScript (Node.js) , 63 bytes
Pruébalo en línea!
fuente