Diferença BCD
Dado um número inteiro n, converta-o para BCD ( decimal com código binário ) substituindo cada dígito decimal pela sua representação binária de 4 dígitos
234 -> 0 0 1 0 0 0 1 1 0 1 0 0
Em seguida, gire a lista de dígitos binários para encontrar os números maiores e menores, representáveis por essa lista sem outros rearranjos.
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)
Converta esses números de volta para decimal, tratando a lista de bits como binário regular e subtraia o menor do maior:
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
A saída é a diferença dos números maiores e menores encontrados.
Casos de teste:
234 -> 3195
1234 -> 52155
12 -> 135
975831 -> 14996295
4390742 -> 235954919
9752348061 -> 1002931578825
Max@#-Min@#&
salva um byte. direita?