Ketika saya masih kecil, dan ingin menghitung uang dolar dalam tabungan hidup saya, saya akan menghitung dengan keras:
satu dua tiga empat lima enam tujuh delapan sembilan sepuluh;
sebelas, dua belas, tiga belas, empat belas, lima belas, enam belas, tujuh belas, delapan belas, sembilan belas, dua puluh;
dua puluh satu, dua puluh dua, dua puluh tiga, dua puluh empat, dua puluh lima ...
Akhirnya saya bosan mengucapkan masing-masing angka multi-suku kata ini. Berpikir matematis, saya menciptakan metode penghitungan yang jauh lebih efisien:
satu dua tiga empat lima enam tujuh delapan sembilan sepuluh;
satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, dua puluh;
satu, dua, tiga, empat, lima, enam, tujuh, delapan, sembilan, tiga puluh ...
Seperti yang Anda lihat, saya hanya akan mengucapkan digit yang telah berubah dari angka sebelumnya. Ini memiliki keuntungan tambahan bahwa itu jauh lebih berulang daripada nama-nama bahasa Inggris untuk angka, dan karenanya membutuhkan lebih sedikit kekuatan otak untuk menghitung.
Tantangan
Tulis sebuah program / fungsi yang mengambil bilangan bulat positif dan menghasilkan / mengembalikan bagaimana saya akan menghitungnya: yaitu, digit paling kanan bukan nol dan semua nol tertinggal.
Contohnya
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
Daftar lengkap kasus uji seharusnya tidak perlu. Ini adalah A274206 pada OEIS.
Aturan
- Entri Anda secara teoritis harus bekerja untuk semua bilangan bulat positif, mengabaikan masalah presisi dan memori.
- Input dan output harus dalam desimal.
- Anda dapat memilih untuk mengambil input dan / atau output sebagai angka, string, atau array angka.
- Input dijamin bilangan bulat positif. Entri Anda dapat melakukan apa saja untuk input yang tidak valid.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
[1,0,2,0]
->[2,0]
untuk kasus uji terakhir? (Saya tidak jelas pada frasa "array item tunggal").