Dada una lista de N
enteros no negativos, emite esos números con espacios rellenados a la izquierda por una longitud de N
. (Alternativamente, devuelva una lista de caracteres / cadenas). Puede suponer que N
es mayor o igual que el número de dígitos del número más grande en la lista. Se permiten espacios finales en la salida.
También puede tomar una cadena que contenga estos números, pero N
no es la longitud de la cadena, sino el número de elementos en la lista; Además, puede tomar una lista de cadenas, por ejemplo ["1", "2", "3"]
.
Este es un código de golf, por lo que gana el programa más corto en bytes.
Casos de prueba
input => 'output'
0 => '0'
1 => '1'
2 3 => ' 2 3'
2 10 => ' 210'
4 5 6 => ' 4 5 6'
17 19 20 => ' 17 19 20'
7 8 9 10 => ' 7 8 9 10'
100 200 300 0 => ' 100 200 300 0'
1000 400 30 7 => '1000 400 30 7'
1 33 333 7777 => ' 1 33 3337777'
0 0 0 0 0 0 => ' 0 0 0 0 0 0'
Respuestas:
05AB1E , 3 bytes
Código:
Explicación:
Pruébalo en línea! o Verificar todos los casos de prueba .
fuente
Python, 32 bytes
Una función anónima que toma una tupla como entrada. Los números o las cadenas funcionan.
Ejemplo:
fuente
JavaScript (ES7), 37 bytes
Entrada: matriz de cadenas
Salida: matriz de cadenas
Mostrar fragmento de código
fuente
PowerShell v2 +, 36 bytes
Toma entrada
$a
como una matriz deint
egers. Los recorre con ellos$a|%{...}
. Cada iteración usa el-f
operador ormat con el opcionalAlignment Component
(basado en$a.count
) para rellenar con la izquierda el número apropiado de espacios. Esa cadena resultante se deja en la tubería. Al final de la ejecución del programa, las cadenas resultantes se dejan en la tubería como una matriz.Ejemplos
La salida se separa en línea nueva en cada ejecución, ya que ese es el valor predeterminado
Write-Output
al finalizar el programa para una matriz.fuente
JavaScript, 49 bytes
Toma los argumentos como una lista de cadenas y también devuelve una lista de cadenas.
Explicación:
fuente
.join("")
lo que no es necesario.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
tiene la misma longitud pero funciona tanto en enteros como en cadenas.Perl, 26 bytes
-4 bytes gracias a @Ton Hospel
25 bytes de código +
-a
bandera.Corre con :
(En algunas versiones anteriores de Perl, es posible que deba agregar
-n
)fuente
-a
opción hará que su código sea más corto ...Bash, 14
Lista de entrada dada en la línea de comando.
No hay mucho que explicar aquí. Simplemente utiliza las funciones integradas
printf
para hacer el relleno necesario, basado en el número de argumentos pasados:$#
es el número de args pasados%<n>d
es un especificador de formato printf que imprime un número entero con hasta n espacios iniciales$@
es la lista de todos los argumentos pasados$@
.Ideone .
fuente
Vim, 19 bytes
YPPG!{<C-F>|R%ri<CR>djVGgJ
Toma una lista de números uno por línea. Se basa en
:set expandtab
, que es popular, pero no universal.Claramente quieres usar
:right
para esto. La pregunta es cómo obtener el número de líneas en la línea de comando. La forma tradicional es:%ri<C-R>=line('$')
, pero todo ese texto es largo.El enfoque más corto y más emprendedor es formar la línea de comando usando el
!
comando de modo normal . Implica algunas soluciones extrañas, expandir el archivo en 2 líneas y luego eliminarlas nuevamente, pero sale 2 bytes más corto. Y estoy un poco sorprendido de que la línea de comando ilegible que obtengo (como:%ri+4!
) realmente funcione, pero lo hace.fuente
expandtab
agrega 7 trazos a esta solución. La razón por la que es un problema es que tengo que buscar otros enfoques para evitar / eliminar pestañas que ahora podrían ganar. Es mucho tiempo, para nada divertido, empeora la calidad de mi solución y ni siquiera afecta a ninguno de los casos de prueba proporcionados (ninguno tiene más de 8 números). Si esa es la regla, esa es la regla, pero prefiero marcar la no competencia que hacerlo sin ellaexpandtab
.Ypp!{
. De hecho es más corto. Tampoco funciona. Siempre llevaría el número 1 a la línea de comando, independientemente de la longitud del archivo.Ruby,
403634 bytesSe puede trabajar en más.
Llama como una lambda.
Explicación:
fuente
Gelatina ,
76 bytesLa entrada es una matriz de cadenas. Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Mathematica, 25 bytes
Tanto la entrada como la salida son listas de cadenas.
Explicación
Obtenga la longitud de la entrada (número de elemento).
Pad dejó cada elemento en la entrada para que sus longitudes coincidan con la longitud de la entrada.
fuente
JavaScript (ES6), 47
Función anónima, entrada: matriz de cadenas, salida: matriz de cadenas
Usando una función de relleno recursiva
Para una matriz de enteros / cadenas como entrada, 49 bytes:
Prueba
fuente
PHP, 55 bytes
Versión anterior 59 bytes
fuente
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 bytes
Pruébalo en línea!
Función unaria que toma la lista de números de la derecha como una matriz y devuelve la cadena rellenada.
Aquí está en uso en el REPL. Tenga en cuenta que las líneas de entrada tienen sangría en tres espacios.
fuente
CJam , 11 bytes
Pruébalo en línea! (Como un conjunto de pruebas).
Explicación
fuente
Kotlin, 90 bytes
Golfizado:
Sin golf:
fuente
Haskell, 47 bytes
Esa es una función de una lista de cadenas a una lista de cadenas, como las respuestas de JavaScript.
replicate
permite obtener una lista (las cadenas de Haskell son listas de caracteres) de un tamaño determinado, por lo que la uso, y la suposición en negrita en el problema, para generar el relleno (su longitud esN
- <longitud del elemento>, para cada elemento de la lista de entrada). Hubiera preferido utilizar unaprintf
solución basada en lugar de esta conreplicate
(habría sido más corta, por un lado), pero la declaración de importación elimina cualquier ahorro realizado en la función en sí.fuente
Java,
8382 bytesConstruye una cadena de formato diseñada para rellenar los argumentos dados por un número de espacios igual a la longitud de la matriz. La cadena de formato se utiliza como argumento para
String.format
, y luego se devuelve el resultado. La interfaz funcional puede aceptar aString[]
o anInteger[]
o similar.Clase completa:
Pruébalo en Ideone.
-1 byte gracias a @KevinCruijssen.
fuente
int ...
ys+=...
dentro deif
este de la siguiente manera:for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 Bytes
Toma solo una matriz de cadenas, emite una matriz de cadenas acolchadas.
fuente
MATL, 14 bytes
Pruébelo en MATL Online
Esto utiliza la creación de cadenas formateadas al construir primero la cadena de formato:
%(NUM)d
y luego aplica el formato de cadena nuevamente usando esta cadena de formato y la entrada.fuente
JavaScript 33 bytes
similar a @Hedi, pero el relleno predeterminado es '', por lo que sus 4 caracteres menos
fuente
K (oK) , 11 bytes
Solución:
Pruébalo en línea!
Explicación:
Interpretado de derecha a izquierda. Convierte a cadena y pad izquierdo con la longitud de la lista, luego aplana:
fuente
Pyth - 7 bytes
Respuesta directa con relleno incorporado.
Test Suite .
fuente
C #, 39 bytes
Toma a
List<string>
y saca aList<string>
.Explicación:
Hubiera sido unos pocos bytes más cortos para usar LINQ si la importación no se cuenta y luego regresa en
IEnumerable<string>
lugar de una lista completa:C #, 35 + 18 = 53 bytes
fuente
R, 47 bytes
Lee la entrada de stdin y usa el formateo de estilo C con
sprintf
. Debería haber alguna forma en que lacat
función no sea necesaria, pero no podría encontrar una forma de suprimir las comillas en cada elemento sin ella. Si solo queremos cotizaciones de inicio y fin, podríamos usar la opción un poco más larga:fuente