Quando ero un bambino e volevo contare le banconote da un dollaro nei miei risparmi di una vita, contavo ad alta voce:
uno due tre quattro cinque sei sette otto nove dieci;
undici, dodici, tredici, quattordici, quindici, sedici, diciassette, diciotto, diciannove, venti;
ventuno, ventidue, ventitre, ventiquattro, venticinque ...
Alla fine mi sono stancato di pronunciare ciascuno di questi numeri a più sillabe. Pensando matematicamente, ho creato un metodo di conteggio molto più efficiente:
uno due tre quattro cinque sei sette otto nove dieci;
uno, due, tre, quattro, cinque, sei, sette, otto, nove, venti;
uno, due, tre, quattro, cinque, sei, sette, otto, nove, trenta ...
Come puoi vedere, vorrei solo pronunciare le cifre che sono cambiate rispetto al numero precedente. Ciò ha l'ulteriore vantaggio di essere considerevolmente più ripetitivo rispetto ai nomi inglesi per i numeri, e quindi richiede meno capacità di calcolo per il calcolo.
Sfida
Scrivi un programma / funzione che accetta un numero intero positivo e restituisce / restituisce il modo in cui lo conterei: cioè la cifra diversa da zero più a destra e tutti gli zero finali.
Esempi
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
Un elenco completo di casi di test non dovrebbe essere necessario. Questo è A274206 su OEIS.
Regole
- La tua voce deve teoricamente funzionare per tutti i numeri interi positivi, ignorando i problemi di precisione e memoria.
- L'input e l'output devono essere decimali.
- Puoi scegliere di prendere input e / o output come un numero, una stringa o una matrice di cifre.
- L'input è garantito per essere un numero intero positivo. La tua voce può fare qualsiasi cosa per input non valido.
Questo è code-golf , quindi vince il codice più breve in byte.
[1,0,2,0]->[2,0]per l'ultimo caso di test? (Non sono chiaro sulla frase "array a elemento singolo").