Когда я был ребенком и хотел считать долларовые банкноты в своих сбережениях, я считал вслух:
один два три четыре пять шесть семь восемь девять десять;
одиннадцать, двенадцать, тринадцать, четырнадцать, пятнадцать, шестнадцать, семнадцать, восемнадцать, девятнадцать, двадцать;
двадцать один, двадцать два, двадцать три, двадцать четыре, двадцать пять ...
В конце концов мне надоело произносить каждое из этих многосложных чисел. Будучи математически мыслящим, я создал гораздо более эффективный метод подсчета:
один два три четыре пять шесть семь восемь девять десять;
один, два, три, четыре, пять, шесть, семь, восемь, девять, двадцать;
один, два, три, четыре, пять, шесть, семь, восемь, девять, тридцать ...
Как видите, я бы произносил только те цифры, которые изменились по сравнению с предыдущим номером. Это имеет дополнительное преимущество, заключающееся в том, что оно значительно более повторяется, чем английские названия чисел, и, следовательно, требует меньше умственных способностей для вычислений.
Вызов
Напишите программу / функцию, которая принимает положительное целое число и выводит / возвращает, как я бы посчитал, то есть самую правую ненулевую цифру и все конечные нули.
Примеры
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
Полный список тест-кейсов не обязателен. Это A274206 на OEIS.
правила
- Ваша запись должна теоретически работать для всех натуральных чисел, игнорируя точность и проблемы с памятью.
- Вход и выход должны быть в десятичном формате.
- Вы можете выбрать ввод и / или вывод в виде числа, строки или массива цифр.
- Ввод гарантированно будет положительным целым числом. Ваша запись может сделать что угодно для неверного ввода.
Это код-гольф , поэтому выигрывает самый короткий код в байтах.
[1,0,2,0]
->[2,0]
для последнего теста? (Мне неясно фраза "массив из одного элемента").