Quando eu era criança, e queria contar as notas de dólar em minhas economias, eu contava em voz alta:
um dois três quatro cinco seis sete oito nove dez;
onze, doze, treze, quatorze, quinze, dezesseis, dezessete, dezoito, dezenove, vinte;
vinte e um, vinte e dois, vinte e três, vinte e quatro, vinte e cinco ...
Por fim, cansei de pronunciar cada um desses números com várias sílabas. Sendo matemático, criei um método muito mais eficiente de contar:
um dois três quatro cinco seis sete oito nove dez;
um, dois, três, quatro, cinco, seis, sete, oito, nove, vinte;
um, dois, três, quatro, cinco, seis, sete, oito, nove, trinta ...
Como você pode ver, eu pronunciaria apenas os dígitos que foram alterados em relação ao número anterior. Isso tem a vantagem adicional de ser consideravelmente mais repetitivo do que os nomes em inglês para números e, portanto, requer menos inteligência para ser computado.
Desafio
Escreva um programa / função que receba um número inteiro positivo e produza / retorne como eu contaria: ou seja, o dígito diferente de zero e o zero à direita.
Exemplos
1 1
2 2
10 10
11 1
29 9
30 30
99 9
100 100
119 9
120 20
200 200
409 9
1020 20
Uma lista completa de casos de teste não deve ser necessária. Este é o A274206 no OEIS.
Regras
- Teoricamente, sua entrada deve funcionar para todos os números inteiros positivos, ignorando problemas de precisão e memória.
- A entrada e a saída devem estar em decimal.
- Você pode optar por receber entrada e / ou saída como um número, uma sequência ou uma matriz de dígitos.
- A entrada é garantida como um número inteiro positivo. Sua entrada pode fazer qualquer coisa para entrada inválida.
Isso é código-golfe , então o código mais curto em bytes vence.
[1,0,2,0]
->[2,0]
para o último caso de teste? (Não estou claro na frase "matriz de item único").