O desafio
Dados dois números inteiros como entrada ( x
e y
), produza x
como uma string com o número de zeros à esquerda necessário para que sejam y
caracteres longos sem o sinal.
Regras
Se
x
tiver mais dey
dígitos, produzax
como string sem modificação.A saída como número inteiro não é aceita, mesmo se não houver zeros à esquerda.
Quando
x
for negativo, mantenha-
como está e opere no valor absoluto.Negativo
y
deve ser tratado como 0, o que significa que você produzx
como está (mas como string)
Exemplos:
IN: (1,1) OUT: "1"
IN: (1,2) OUT: "01"
IN: (10,1) OUT: "10"
IN: (-7,3) OUT: "-007"
IN: (-1,1) OUT: "-1"
IN: (10,-1) OUT: "10"
IN: (0,0) OUT: "0"
IN: (0,1) OUT: "0"
IN: (0,4) OUT: "0000"
O código mais curto em bytes vence, as brechas padrão se aplicam.
(-1,1)
dá?+
sinal inicial é aceitável para números positivos?Respostas:
Japonês ,
138 bytesToma a primeira entrada (
x
) como uma sequência.Tente
Economizou 5 bytes em massa graças ao ETHproductions.
Explicação
Entrada implícita de sequência
U=x
e número inteiroV=y
.® }'-
divideU
em uma matriz no símbolo de menos, mapeia sobre ele e junta-o novamente a uma sequência com um símbolo de menos.©
é lógico AND (&&
), portanto, se o elemento atual for verdadeiro (uma seqüência de caracteres não vazia), arraste para a esquerda (ù
) com 0 (T
) no comprimentoV
.fonte
-
: ethproductions.github.io/japt/…q
, o que seria, então,q-_©ùTV
salvar 1 byte :-)S.q()
(nos fornecerS.q(s,f)
),S
ela será divididas
, executadaf
e se juntará a elas
? Eu gosto disso! :)N.s
,S/A.y
,N.ì
isso já) com um monte de métodos? Eu tive uma conversa com alguém, eu não me lembro quem agora: sPitão , 12 bytes
Experimente aqui!
fonte
Python 2 , 29 bytes
Experimente online!
Apenas
str.zfill
chega tão perto.fonte
05AB1E ,
1110 bytesEntrada fornecida como
amount_of_digits, number
Experimente online!
Explicação
fonte
Python, 29 bytes
Tome entrada como
f(x,y)
. Usando o%
operador do Python .Experimente online!
fonte
C #, 56 bytes
Experimente Online!
fonte
Java (OpenJDK 8) , 47 bytes
Experimente online!
No começo eu pensei, fácil, 30 caracteres no máximo (o que é bastante curto ao manipular strings em Java). Então as exceções aconteceram.
fonte
JavaScript (ES6), 42
Parâmetros recursivos, em ordem inversa, primeiro y depois x. E currying
Teste
fonte
f(y)(x)
vez def(x,y)
.y=>r=x=>x<0?'-'+r(-x):(x+='')[y-1]?x:r(0+x)
chega tão perto ...Python 3.6 ,
2837 bytesExperimente online! (Caso de teste da resposta de Colera Su)
Aproveitando a nova maneira de formatar seqüências de caracteres no python 3.6
+9 bytes para manipular
y<0
fonte
y
é negativo: tio.run/##K6gsycjPM/…bash,
27, 25 bytes-2 bytes graças a Bruce Forte
experimente online
fonte
printf %\ 0$[1+$1]d $2|xargs
.printf %\ 0$[1+$2]d $1|xargs
, eu não me lembro este formato para números assinados também xargs truque para remover espaço à esquerdaCasca , 12 bytes
Experimente online!
Explicação
fonte
R,
56bytes 48Experimente online!
-8 bytes graças a djhurio
Explicação
sprintf("%0zd",x)
retornax
como uma string preenchida com zeros para ter comprimentoz
paste0("%0",y+(x<0),"d")
constrói a string"%0zd"
, ondez
estáy
, mais 1 sex
for menor que zeroz
for menor que o número de dígitosx
,x
será impresso como uma sequência de caracteres.fonte
function(x,y)sprintf(paste0("%0",y+(x<0),"d"),x)
Alice , 23 bytes
Experimente online!
A entrada deve ser separada pela alimentação de linha com o número na primeira linha e a largura na segunda.
Explicação
Essa é a estrutura usual para programas lineares no modo Ordinal. O único problema neste caso é este bit:
Isso faz com que o IP entre no modo Cardinal verticalmente e execute apenas o
&
modo Cardinal antes de continuar no modo Ordinal.O desdobramento do fluxo de controle em zigue-zague fornece:
Aqui estão duas alternativas, também em 23 bytes, que usam Cardinal
H
( abs ) para se livrar de-
:Em princípio, esse comando é mais curto, mas
&
não se encaixa em uma posição em que haja uma cadeia de 1 caractere na pilha; portanto, precisamos ignorá-lo com a#
.fonte
C, 33 bytes
Experimente online!
fonte
Carvão ,
1613 bytesExperimente online!
Este é o mais curto que pude obter usando o carvão vegetal sem imprimir espaços em branco à esquerda ou à direita. Pelo menos agora estou começando a entender como usar a
Modulo
função para formatar seqüências de caracteres.O código de deverbosed é o seguinte:
fonte
-
ou nada é realmente fácil no carvão: Imprimir 1 imprime-
enquanto imprimir 0 não imprime nada. Portanto, o ternário é supérfluo, economizando 3 bytes.InputNumber()
com oCast(q)
, acho que pode mudar para uma comparação de cadeias para salvar outro byte.Ternary
!Retina , 39 bytes
Experimente online!
A entrada deve ser separada por vírgula com o número primeiro e a largura segundo.
fonte
PHP, 45 bytes
ou
Corra com
-nr
ou experimente-os online .fonte
Mathematica, 118 bytes
Experimente online!
fonte
Mathematica,
6362 bytesExperimente online!
fonte
IntegerLength
vez deIntegerDigits
. Você pode salvar um byte usando emIntegerLength@#
vez deIntegerLength[#]
.Excel, 29 bytes
Usando a
TEXT
funcionalidade do Excel ("Converte um valor em texto em um formato numérico específico").x
na A1,y
na B1fonte
)))
bytes de -3 convertendo-o no Google SheetsOitava , 44 bytes
Experimente online!
fonte
Haskell , 54 bytes
Experimente online!
fonte
Ruby ,
3128 bytesObrigado Carl por salvar 3 bytes usando interpolação.
Experimente online!
fonte
Japonês ,
1412 bytesEconomizou 2 bytes graças a @ETHproductions
Experimente online
fonte
x
uma string de 10 bytes .U
uma string que nos permite jogar com os 2 primeiros caracteres.PowerShell ,
2540 bytesExperimente online!
Explicação
Isso chama
.ToString()
o número com uma sequência de formato gerada, mas o multiplica por -1, 0 ou 1 com base em se$b
(y
) é negativo, 0 ou positivo, respectivamente; isso é para lidar comy
valores negativos que as seqüências de formato não fazem por si mesmas.Isso parece exigir a quebra de números negativos em uma subestação
()
para que funcione, o que é apenas uma peculiaridade da invocação ao usar literais; se passadas variáveis do tipo número inteiro, não seria necessário.fonte
y
é negativo.C # 6.0, 35 bytes
Solução alternativa (51 bytes)
fonte
Limpo ,
908683 bytesExperimente online!
fonte
C (gcc) , 45 bytes
Experimente online!
Explicação
printf
formata três argumentos:%s
formata a sequência"-"+(x>=0)
."-"
é realmente apenas um endereço, algo assim41961441
. Na memória, isso se parece com isso:Quando formatado em uma sequência, C pega o endereço (por exemplo, 41961441) e continua adquirindo caracteres até que um byte nulo (0x00) seja encontrado. Quando x é menor que zero, o valor
"-"+(x>=0)
tem o do endereço original (41961441). Caso contrário,x>=0
é 1, então a expressão se torna"-"+1
, que aponta o byte nulo depois"-"
, que não imprime nada.%0*i
imprime um número inteiro preenchido com um número especificado de0
s.y
indica esse número. Nósabs(x)
evitamos o negativo em alguns argumentos.fonte
Perl, 25 +
-n
sinalizador = 26 bytesExperimente online!
fonte
Perl 5, 22 + 1 (-
n
) = 23 bytesExperimente online
fonte
10,-1
+5 bytes
-5 bytes