Perbedaan BCD
Dengan bilangan bulat n, konversikan ke BCD ( binary-coded decimal ) dengan mengganti setiap digit desimal dengan representasi biner 4 digitnya
234 -> 0 0 1 0 0 0 1 1 0 1 0 0
Kemudian putar daftar angka biner untuk menemukan angka terbesar dan terkecil, diwakili oleh daftar ini tanpa penataan ulang lainnya.
max: 1 1 0 1 0 0 0 0 1 0 0 0 (the entire list rotated left 6 times)
min: 0 0 0 0 1 0 0 0 1 1 0 1 (the entire list rotated right 2 times)
Ubah angka-angka ini kembali menjadi desimal, memperlakukan daftar bit sebagai biner biasa dan kurangi yang terkecil dari yang terbesar:
1 1 0 1 0 0 0 0 1 0 0 0 -> 3336
0 0 0 0 1 0 0 0 1 1 0 1 -> 141
3336 - 141 -> 3195
Outputnya adalah selisih angka terbesar dan terkecil yang ditemukan.
Kasus uji:
234 -> 3195
1234 -> 52155
12 -> 135
975831 -> 14996295
4390742 -> 235954919
9752348061 -> 1002931578825
Max@#-Min@#&
menghemat satu byte. kanan?