Symmetric Bijective Algorithm for Integers

后端 未结 11 889
甜味超标
甜味超标 2020-12-01 03:33

I need an algorithm that can do a one-to-one mapping (ie. no collision) of a 32-bit signed integer onto another 32-bit signed integer.

My real concern is enough entr

11条回答
  •  被撕碎了的回忆
    2020-12-01 04:17

    Take a number, multiplies by 9, inverse digits, divide by 9.

    123  <> 1107 <> 7011 <> 779
    256  <> 2304 <> 4032 <> 448
    1028 <> 9252 <> 2529 <> 281
    

    Should be obscure enough !!

    Edit : it is not a bijection for 0 ending integer

    900 <> 8100 <> 18 <> 2
    2   <> 18   <> 81 <> 9
    

    You can always add a specific rule like : Take a number, divide by 10 x times, multiplies by 9, inverse digits, divide by 9, multiples by 10^x.

    And so

    900 <> 9 <> 81 <> 18 <> 2 <> 200
    200 <> 2 <> 18 <> 81 <> 9 <> 900
    

    W00t it works !

    Edit 2 : For more obscurness, you can add an arbitrary number, and substract at the end.

    900 < +256 > 1156 < *9 > 10404 < invert > 40401 < /9 > 4489 < -256 > 4233
    123 < +256 > 379 < *9 > 3411 < invert > 1143 < /9 > 127 < -256 > -129
    

提交回复
热议问题