Cuando era niño y quería contar los billetes de un dólar en mis ahorros de toda la vida, contaba en voz alta:
uno dos tres CUATRO CINCO SEIS SIETE OCHO NUEVE DIEZ;
once, doce, trece, catorce, quince, dieciseis, diecisiete, dieciocho, diecinueve, veinte;
veintiuno, veintidos, veintitres, veinticuatro, veinticinco ...
Finalmente me cansé de pronunciar cada uno de estos números de múltiples sílabas. Con una mentalidad matemática, creé un método mucho más eficiente de contar:
uno dos tres CUATRO CINCO SEIS SIETE OCHO NUEVE DIEZ;
uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, veinte;
uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, treinta ...
Como puede ver, solo pronunciaría los dígitos que han cambiado desde el número anterior. Esto tiene la ventaja adicional de que es considerablemente más repetitivo que los nombres en inglés para los números y, por lo tanto, requiere menos capacidad intelectual para calcular.
Reto
Escriba un programa / función que tome un número entero positivo y arroje / devuelva cómo lo contaría: es decir, el dígito más a la derecha que no sea cero y todos los ceros finales.
Ejemplos
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
No debería ser necesaria una lista completa de casos de prueba. Este es A274206 en OEIS.
Reglas
- Su entrada debe funcionar teóricamente para todos los enteros positivos, ignorando la precisión y los problemas de memoria.
- La entrada y la salida deben estar en decimal.
- Puede optar por tomar la entrada y / o salida como un número, una cadena o una matriz de dígitos.
- Se garantiza que la entrada sea un número entero positivo. Su entrada puede hacer cualquier cosa por entrada no válida.
Este es el código de golf , por lo que gana el código más corto en bytes.
[1,0,2,0]->[2,0]para el último caso de prueba? (No estoy claro en la frase "matriz de un solo elemento").