Kiedy byłem dzieckiem i chciałem liczyć dolary w moich oszczędnościach na życie, liczyłem głośno:
jeden dwa trzy cztery pięć sześć siedem osiem dziewięć dziesięć;
jedenaście, dwanaście, trzynaście, czternaście, piętnaście, szesnaście, siedemnaście, osiemnaście, dziewiętnaście, dwadzieścia;
dwadzieścia jeden, dwadzieścia dwa, dwadzieścia trzy, dwadzieścia cztery, dwadzieścia pięć ...
W końcu zmęczyło mnie wymawianie każdej z tych wielosylabowych liczb. Z matematycznego punktu widzenia stworzyłem znacznie bardziej wydajną metodę liczenia:
jeden dwa trzy cztery pięć sześć siedem osiem dziewięć dziesięć;
jeden, dwa, trzy, cztery, pięć, sześć, siedem, osiem, dziewięć, dwadzieścia;
jeden, dwa, trzy, cztery, pięć, sześć, siedem, osiem, dziewięć, trzydzieści ...
Jak widać, wymawiałbym tylko cyfry, które zmieniły się od poprzedniego numeru. Ma to tę dodatkową zaletę, że jest znacznie bardziej powtarzalne niż angielskie nazwy liczb, a zatem wymaga mniejszej mocy mózgowej do obliczeń.
Wyzwanie
Napisz program / funkcję, która przyjmuje dodatnią liczbę całkowitą i zwraca / zwraca tak, jak bym to policzyła: to znaczy najbardziej niezerową cyfrę po prawej stronie i wszystkie zera końcowe.
Przykłady
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
Pełna lista przypadków testowych nie powinna być konieczna. To jest A274206 w OEIS.
Zasady
- Wpis musi teoretycznie działać dla wszystkich liczb całkowitych dodatnich, ignorując problemy z precyzją i pamięcią.
- Dane wejściowe i wyjściowe muszą być dziesiętne.
- Możesz zdecydować się na wejście i / lub wyjście jako liczbę, ciąg znaków lub tablicę cyfr.
- Dane wejściowe mają być dodatnią liczbą całkowitą. Twój wpis może zrobić wszystko dla nieprawidłowych danych wejściowych.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
[1,0,2,0]
->[2,0]
dla ostatniego przypadku testowego? (Nie jestem pewien, co do frazy „tablica jednopunktowa”).