Percebi que um determinado jogo tinha um contador de vida peculiar que, em vez de parar 999
, ganhou um novo dígito - o número seguinte era de cem coroas ou 👑00
. Depois 👑99
veio a coroa cem coroas ( 👑👑0
) e o último número, depois 👑👑9
, foi a coroa cem coroas ou 👑👑👑
, que seria 1110 em decimal.
Sua tarefa é escrever um programa ou uma função que produz esse contador.
Dado um número inteiro do intervalo [0,1110]
(inclusive nas duas extremidades), produza uma cadeia de três caracteres em que
- cada personagem é da lista
0123456789👑
- a coroa (👑) pode aparecer apenas como o caracter mais à esquerda ou quando houver uma coroa à esquerda
- quando esse número é lido como um número decimal, mas com a coroa contando como
10
, você recebe de volta o número original
Casos de teste
0 → "000"
15 → "015"
179 → "179"
999 → "999"
1000 → "👑00"
1097 → "👑97"
1100 → "👑👑0"
1108 → "👑👑8"
1110 → "👑👑👑"
Você pode usar qualquer caractere não decimal em vez da coroa. Para incentivar uma impressão bonita, o caractere de coroa (sequência de bytes UTF8 "\ 240 \ 159 \ 145 \ 145") conta como um byte em vez de quatro. Seu programa não precisa trabalhar com números fora do intervalo válido.
Isso é código-golfe , então a resposta mais curta, medida em bytes, vence!
Respostas:
05AB1E ,
2018 bytesUsa espaços para coroas.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
JavaScript (Node.js) , 50 bytes
Experimente online!
O TIO foi baseado na resposta de Arnauld. Mostrar 👑 como
#
.fonte
JavaScript (ES6),
62 4644 bytesGuardado 2 bytes graças a @nwellnhof
Emite coroas como
x
caracteres.Experimente online!
Quão?
Adicionamos à entrada, coagimos a uma string, procuramos o padrão e substituí-lo por . Finalmente, retornamos os três caracteres finais.10000
/1+0/
xxx
Exemplos:
fonte
s.replace(/./g,`#`)
é legal ... eu tinhaArray(s.length+1).join`#`
, e minha regex também era mais longa! Bom trabalho, +1Linguagem de programação de Shakespeare ,
763692690689683 bytesExperimente online!
Usa em
" "
vez de coroas. Ao custo de mais 4 bytes, isso pode ser modificado para mostrar um caractere "visível".Explicação:
fonte
Python 2 , 53 bytes
Tiramos o chapéu para Arnauld por -22 bytes . A recursão ainda vence, no entanto.
Experimente online!
Python 2 , 51 bytes
Em vez disso, implementa o método recursivo do tsh . Economizou 2 bytes graças a ovs .
Experimente online!
fonte
1+0
. Portanto, esta versão de 53 bytes .Python 2 , 52 bytes
Experimente online!
fonte
Retina 0.8.2 , 41 bytes
Experimente online! Usa
#
s em vez de👑
s. O link inclui casos de teste. Explicação:Coloque números de 1 e 2 dígitos com três dígitos.
Altere
1
s iniciais de números de 4 dígitos para se#
apague o próximo0
.fonte
Geléia , 19 bytes - 0 = 19
Um programa completo que imprime o resultado usando um caractere de espaço como coroa.
(Como um link monádico, é gerada uma lista mista de dígitos inteiros e caracteres de espaço)
Experimente online! Ou veja a suíte de testes .
... talvez uma implementação recursiva seja mais curta.
Quão?
fonte
Python 2 , 40 bytes
Experimente online!
Implementa uma idéia semelhante à resposta baseada em regex do Sr. Xcoder, mas sem um regex. Nós remover líder 1s em
10000+n
, bem como o carácter seguinte, em seguida, pad com espaços ao comprimento 3. O resultado é semelhante à solução da OVS usandolstrip
, mas sem a necessidade de dois casos.fonte
Limpo , 87 bytes
Não produz coroas (usa
c
).Experimente online!
Limpo , 99 - 3 = 96 bytes
Este tem coroas.
Experimente online!
fonte
Japonês, 20 bytes
Um porto ingênuo (e um pouco bêbado!) Da solução de Arnauld. Usa
"
para coroa.Tente
fonte
Java 10,
8483 bytesPorto de @tsh 'comentário C .
Usa em
.
vez de coroas.Experimente online.
Abordagem alternativa (84 (87-3) bytes):
Porto da resposta do @tsh 'JavaScript .
Experimente online.
fonte
APL (Dyalog Unicode) , 32 bytes
Experimente online!
Prefixo da função direta.
Porta da resposta JS do @ tsh .
Quão:
fonte
PHP, 71 bytes
imprime
C
para a coroa. Execute como pipe-nR
ou experimente online .fonte
Haskell , 48 bytes
Experimente online!
fonte
C,
8458 bytesAgradecemos a @tsh por salvar 25 bytes e a @ceilingcat por salvar um byte!
Experimente online!
fonte
f(n,p){for(p=1000;p/=10;)n-=putchar(n/p>9?46:48+n/p)%12*p;}
sed , 39
48 bytes, mas a pontuação é 39, pois cada 👑 conta como 1.
Experimente online!
fonte
Perl 6 , 38 - 9 = 29 bytes
-2 bytes graças a Jo King
Experimente online!
Inspirado na solução JavaScript de Arnauld.
fonte
Limpo , 96 bytes
Acho que o Super Mario 3D Land, o New Super Mao Bros.2 e o Super Mario 3D World têm esse contador de vidas.
Eu concordo com o Clean .
fonte