BCD差
整数nが与えられた場合、各10進数を4桁のバイナリ表現で置き換えることにより、BCD(バイナリコード10進数)に変換します。
234 -> 0 0 1 0 0 0 1 1 0 1 0 0
次に、他の再配置なしでこのリストで表現できる最大数と最小数を見つけるために、2進数のリストを回転させます。
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)
これらの数値を10進数に変換し、ビットのリストを通常のバイナリとして扱い、最大から最小を減算します。
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
出力は、見つかった最大数と最小数の差です。
テストケース:
234 -> 3195
1234 -> 52155
12 -> 135
975831 -> 14996295
4390742 -> 235954919
9752348061 -> 1002931578825
Max@#-Min@#&
バイトを保存します。右?