Dada uma lista de N
números inteiros não negativos, imprima esses números com cada um preenchido à esquerda por espaços com um comprimento de N
. (Como alternativa, retorne uma lista de caracteres / sequência.) Você pode assumir que N
seja maior ou igual ao número de dígitos do maior número na lista. Espaços à direita são permitidos na saída.
Você também pode N
usar uma string contendo esses números, mas não é o comprimento da string, mas o número de elementos na lista; Além disso, você pode fazer uma lista de strings, por exemplo ["1", "2", "3"]
.
Este é um código de golfe, portanto o programa mais curto em bytes vence.
Casos de teste
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'
Respostas:
05AB1E , 3 bytes
Código:
Explicação:
Experimente online! ou Verifique todos os casos de teste .
fonte
Python, 32 bytes
Uma função anônima que usa uma tupla como entrada. Números ou seqüências de caracteres funcionam.
Exemplo:
fonte
JavaScript (ES7), 37 bytes
Entrada: matriz de cadeias
Saída: matriz de cadeias
Mostrar snippet de código
fonte
PowerShell v2 +, 36 bytes
Recebe entrada
$a
como uma matriz deint
egers. Loops através deles com$a|%{...}
. Cada iteração usa o-f
operador ormat com o opcionalAlignment Component
(com base em$a.count
) para colocar à esquerda o número apropriado de espaços. Essa sequência resultante é deixada no pipeline. No final da execução do programa, as seqüências resultantes são todas deixadas no pipeline como uma matriz.Exemplos
A saída é separada por nova linha em cada execução, pois esse é o padrão
Write-Output
na conclusão do programa para uma matriz.fonte
JavaScript, 49 bytes
Toma os argumentos como uma lista de cadeias e também retorna uma lista de cadeias.
Explicação:
fonte
.join("")
não é necessária.a=>a.map(n=>(" ".repeat(l=a.length)+n).slice(-l))
tem o mesmo comprimento, mas funciona tanto em números inteiros quanto em cadeias.Perl, 26 bytes
-4 bytes graças a @Ton Hospel
25 bytes de código +
-a
sinalizador.Correr com :
(Em alguma versão mais antiga do Perl, você pode precisar adicionar
-n
)fonte
-a
opção fará com que o seu código mais curto ...Bash, 14
Lista de entrada fornecida na linha de comando.
Não há muito a explicar aqui. Simplesmente usa
printf
recursos internos para fazer o preenchimento necessário, com base no número de argumentos passados:$#
é o número de argumentos passados%<n>d
é um especificador de formato printf que imprime um número inteiro com até n espaços à esquerda$@
é a lista de todos os argumentos passados$@
.Ideone .
fonte
Vim, 19 bytes
YPPG!{<C-F>|R%ri<CR>djVGgJ
Leva uma lista de números um por linha. Confia no
:set expandtab
que é popular, mas não universal.Você deseja claramente usar
:right
isso. A questão é como obter o número de linhas na linha de comando. A maneira tradicional é:%ri<C-R>=line('$')
, mas todo esse texto é longo.A abordagem mais curta e empreendedora é formar a linha de comando usando o
!
comando no modo normal . Envolve algumas soluções estranhas, expandindo o arquivo em 2 linhas e removendo-os novamente, mas sai 2 bytes mais curto. E eu estou chocado com a linha de comando distorcida que eu recebo (como:%ri+4!
) realmente funciona, mas funciona.fonte
expandtab
adiciona 7 toques a esta solução. O motivo desse problema é que tenho que procurar outras abordagens para evitar / remover guias que agora podem vencer. É muito tempo, nada divertido, piora a qualidade da minha solução e nem afeta nenhum dos casos de teste fornecidos (nenhum deles tem mais de 8 números). Se essa é a regra, é a regra, mas eu prefiro marcar a não concorrência do que fazer isso semexpandtab
.Ypp!{
. É realmente mais curto. Também não funciona. Sempre traria o número 1 para a linha de comando, independentemente do comprimento do arquivo.Ruby,
403634 bytesPode ser trabalhado em mais.
Ligue como um lambda.
Explicação:
fonte
Geléia ,
76 bytesEntrada é uma matriz de seqüências de caracteres. Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
Mathematica, 25 bytes
Tanto a entrada quanto a saída são listas de strings.
Explicação
Obtenha o comprimento da entrada (número de elemento).
O pad deixou cada elemento na entrada para que seus comprimentos correspondam ao comprimento da entrada.
fonte
JavaScript (ES6), 47
Função anônima, entrada: matriz de cadeias, saída: matriz de cadeias
Usando uma função de preenchimento recursivo
Para uma matriz de número inteiro / sequência como entrada, 49 bytes:
Teste
fonte
PHP, 55 bytes
Versão anterior 59 bytes
fonte
foreach($a=$_GET[a]as$i)printf("%".count($a)."s",$i);
J, 4 bytes
Experimente online!
Função unária, pegando a lista de números à direita como uma matriz e retornando a string preenchida.
Aqui está em uso no REPL. Observe que as linhas de entrada são recuadas em três espaços.
fonte
CJam , 11 bytes
Experimente online! (Como uma suíte de teste.)
Explicação
fonte
Kotlin, 90 bytes
Golfe:
Ungolfed:
fonte
Haskell, 47 bytes
Essa é uma função de uma lista de cadeias de caracteres para uma lista de cadeias de caracteres, como as respostas do JavaScript.
replicate
permite obter uma lista (seqüências de caracteres Haskell são listas de caracteres) de um determinado tamanho, então eu a uso - e a suposição em negrito no problema - para gerar o preenchimento (seu comprimento éN
- <comprimento do elemento>, para cada elemento da lista de entrada). Eu preferiria usar umaprintf
solução baseada em vez de uma soluçãoreplicate
(ela teria sido mais curta, por um lado), mas a instrução de importação mata todas as economias feitas na própria função.fonte
Java,
8382 bytesConstrói uma string de formato projetada para preencher os argumentos fornecidos por um número de espaços iguais ao comprimento da matriz. A sequência de formato é usada como argumento para
String.format
e o resultado é retornado. A interface funcional pode aceitar umString[]
ou umInteger[]
ou similar.Classe completa:
Experimente em Ideone.
-1 byte graças a @KevinCruijssen.
fonte
int ...
es+=...
dentro doif
seguinte: #for(int i=a.length,j=i;i-->0;s+="%"+j+"s");
Groovy, 36 bytes
Recebe apenas uma matriz de seqüências de caracteres, gera uma matriz de seqüências de caracteres acolchoadas.
fonte
MATL, 14 bytes
Experimente no MATL Online
Isso usa a criação de cadeia de caracteres formatada construindo primeiro a cadeia de formato:
%(NUM)d
e depois aplica a formatação de cadeia novamente usando essa cadeia de formato e a entrada.fonte
JavaScript 33 bytes
semelhante ao @Hedi - mas o preenchimento padrão é '', portanto, seus 4 caracteres a menos
fonte
K (oK) , 11 bytes
Solução:
Experimente online!
Explicação:
Interpretada da direita para a esquerda. Converta em string e mantenha o teclado esquerdo com o comprimento da lista e achatar:
fonte
Pitão - 7 bytes
Resposta direta usando o preenchimento interno.
Conjunto de Teste .
fonte
C #, 39 bytes
Pega a
List<string>
e produz aList<string>
.Explicação:
Seriam alguns bytes mais curtos para usar o LINQ se a importação não fosse contada e retornasse em
IEnumerable<string>
vez de uma lista completa:C #, 35 + 18 = 53 bytes
fonte
R, 47 bytes
Lê a entrada do stdin e usa formatação no estilo C com
sprintf
. Deve haver alguma maneira de acat
função não ser necessária, mas não foi possível encontrar uma maneira de suprimir as aspas de cada elemento sem ela. Se quisermos apenas cotações de início e de final, poderíamos usar a opção um pouco mais longa:fonte