Introdução
Na esteira da esquerda-pad pacote npm precipitação , vamos ter um golf código para a implementação deixou-pad.
A função do teclado esquerdo consiste em 2 argumentos padrão e 1 argumento adicional, no formato string , length , ( padchar ). Se o padchar não for fornecido, isso será padronizado para um caractere de espaço . Vamos dar um exemplo com dois argumentos:
left_pad("abc", 6)
Primeiro, observamos o comprimento da corda, que é 3 . Depois disso, precisamos preencher esta string à esquerda até que o comprimento da string completa atinja o comprimento indicado na função. Nesse caso 6 . Como o padchar não é fornecido , precisamos preenchê- lo com espaços:
abc
Esta é uma string com 3 espaços e a string inicial, resultando em uma string com comprimento 6. Aqui está um exemplo com o padchar fornecido:
left_pad("abc", 6, "-")
Apenas fazemos o mesmo que o exemplo acima, mas substituímos os espaços pelo padchar. Nesse caso, o hífen:
---abc
A tarefa
Dada a sequência , o comprimento e, talvez, o argumento adicional de argumento , produz a sequência preenchida à esquerda. Você pode supor que o número do comprimento seja igual ou superior ao comprimento da string. O padchar sempre será composto de 1 caractere.
Casos de teste
left_pad("string", length, ("padchar")) === "left-padded string"
left_pad("foo", 5) === " foo"
left_pad("foobar", 6) === "foobar"
left_pad("1", 2, "0") === "01"
left_pad("1", 2, "-") === "-1"
Isso é código-golfe , então a submissão com o menor número de bytes vence!
Respostas:
Pitão,
1311 bytesExperimente aqui .
Recebe entrada de STDIN como a sequência na primeira linha, o comprimento na segunda linha e o caractere de preenchimento opcionalmente na terceira linha.
fonte
JavaScript (ES6), 43 bytes
fonte
p+=s
, você pode adicionar 2 bytes para fazê-lop+=[s]
, e ele funcionará.JavaScript (ES6),
374344 bytesTeste:
Não tenho certeza se você deseja contar a declaração da função, eu inline isso.
fonte
slice
é mais curto quesubstr
.console.log(f("whatever",10, "*"))
, masconsole.log(("*".repeat(10)+"whatever").substr(-10))
Javascript ES6, 35 bytes
Tente. Acredito que esta seja a implementação mais curta possível atualmente em Javascript.
fonte
Python 3,
333129 bytesBastante direto.Graças a @xnor por me lembrarstr.rjust
é uma coisa. : PPara o mesmo comprimento (também graças ao xnor):
Solução anterior:
fonte
(x*b+a)[-b:]
oua.rjust(b,x)
. Na verdade,str.rjust
ele próprio funciona sem dúvida para a coisa toda.rjust
era um builtin, obrigado!f(1, 2, 0) === '01';
05AB1E ,
119 bytesCódigo:
Explicação:
Usa a codificação CP-1252 . Experimente online .
fonte
JavaScript (ES5), 70 bytes
Usando recursão ...
Minha partida inicial foi de apenas 57 bytes:
Mas apenas passou nos dois primeiros testes:
Ainda gosto do mais curto, porque, na prática, passar números para uma função de manipulação de string não é um recurso que eu precisaria.
fonte
Mathematica, 13 bytes
Resposta interna apenas # 3 (a primeira foi
Range
, a segunda foiSurd
) Ou menos incorporada: (35 bytes)fonte
It's common practice to disallow built-ins that exactly implement what the challenge asks if that's a concern.
(Apelo à autoridade: Martin) (mas também ao bom senso)Julia, 4 bytes
Passa em todos os casos de teste:
fonte
rect 7 cor
?lpad("rect", 7, "cor") => "correct"
Javascript (ES6), 55 bytes
Crie uma matriz vazia de valores e participe da versão.
É mais legível, mas
return
adiciona mais alguns caracteres.fonte
`
parainline code blocks.
.+=
retorna o valor de seu operando esquerdo, portanto a segunda versão fica mais curta:(a,n,c=' ')=>(new Array(++n-(a+='').length).join(c)+a)
mas fica mais longa quando você adiciona seqüências de preenchimento multichar.Bash, 57 bytes
Parâmetros: largura da cadeia padchar
Faça uma sequência de espaços de largura .
Converta cada caractere de espaço em padchar .
Escreva o preenchimento e depois a corda .
fonte
Python, 41 bytes
Sem o ajuste interno, 43 bytes:
(não o que se espera, mas passa no conjunto de testes)
fonte
s=str
e substituirs
comstr
a mesma contagem de bytes.Gelatina , 12 bytes
Tantas referências de variáveis. Jelly não deveria ser uma linguagem tácita ?
Experimente online!
Como funciona
fonte
padchar (⁵, defaults to 10)
não deveria usar como padrão20
ou32
??
verifica se ele tem seu valor padrão 10 e gera um espaço nesse caso.JavaScript ES7, 16 bytes
ftw embutido! Funciona apenas no Firefox 48 e superior. Válido como este recurso foi adicionado em 12 de março.
Isso leva a entrada como:
fonte
Pike , 67 bytes
suspiro . A cadeia vazia é
""
avaliada comotrue
.Por quê!?misto misto misto misto misto ...
fonte
Pyke , 12 bytes (não competitivo)
nó de entrada adicionado, correção de bug no nó len, altere os resultados padrão no nó de atribuição após o lançamento do desafio.
Explicação:
fonte
JavaScript ES6, 38 bytes
Uma solução alternativa.
fonte
JavaScript (ES6), 34 bytes
Eu usei uma solução recursiva.
fonte
Ruby, 42 bytes
Parâmetros: string, tamanho, padchar.
Conjunto de teste abaixo; deve imprimir todos os "verdadeiros", basta colocar tudo no mesmo arquivo.
fonte
Java 8,
8688 bytesEsta é uma função. O terceiro argumento é a
varargs
para permitir o pad pad opcional (o padrão é' '
)Recursão! +2 bytes (colchetes adicionados devido a erro de tipo incompatível)
fonte
PHP,
5448 bytesUsa a codificação Windows-1252.
Execute assim (
-d
adicionado apenas para easthetics):Versão antiga (sem o builtin):
Tweaks
str_pad
vez de um loop. Deixando o antigo para referência, pois os componentes internos são desaprovadosfonte
R, 50 bytes
Tarde para a festa novamente, mas aqui vai:
Isso simplesmente imprime a saída em stdout, mas na verdade não retorna a string acolchoada (não tinha certeza se isso é um requisito para o desafio). Se isso for necessário, a solução será um pouco mais longa em 61 bytes:
fonte
C, 64 bytes
Experimente aqui .
fonte
gcc
vai deixarundefined reference to function printf
passar e incluemprintf
-se, mas não sorte paramemset
,asprintf
, estrlen
. Você precisa adicionar as#include<string.h>
definições ... etc para tornar isso válido.gcc-5.1
. Não tenho certeza se eles estão usando sinalizadores de compilador ou o que você tem nos bastidores que eu não conheço. Eu estava inicialmente usando esta como a minha justificativa para não correr em seu ambiente, mas agora eu não tenho certeza ...gcc 5.2.1
no Linux, então você pode se safar dizendo isso,Ideone C, 64 bytes
mas se você quiser dizer que é C, faça-o compilar. : pf
quatro parâmetros, não três? Você está exigindo o endereço da string ou ...? de qualquer forma,f
deve levar no máximo 3 argumentos.