我正在寻找一个函数,将两个(正)整数映射到一个新的整数中,该新整数可以被反转为原始组合。
这个问题以前已经被问过,例如 Mapping two integers to one, in a unique and deterministic way。不同之处在于其中一个整数受到相当小的上限约束,例如50。另一个整数没有限制。
我试图解决的问题是,我有1-50个数组,其中包含1-max int(但大多数<10.000.000)的数字。
现在我想创建一个单一的新数组,将这些N个数组组合成一个新数组,其中每个数字都可以反转到原始数组。因此,我考虑创建一对数字,一个指向数组,一个指向数组中的实际数字。
如果我使用默认函数如Cantor Pairing Function,很快就会得到巨大的数字,我试图尽可能保持这些数字尽可能小。最好的情况是最大部分只适合Int32而不是long。我认为这应该是可能的,因为我的一对数字中的一个数字被50限制,但我想不出如何做到这一点。
我试图解决的问题是,我有1-50个数组,其中包含1-max int(但大多数<10.000.000)的数字。
array1 {1,2,3,4,5,6,7..N)
array2 {1,2,3,4,5,6,7..N)
array50 {1,2,3,4,5,6,7..N)
现在我想创建一个单一的新数组,将这些N个数组组合成一个新数组,其中每个数字都可以反转到原始数组。因此,我考虑创建一对数字,一个指向数组,一个指向数组中的实际数字。
如果我使用默认函数如Cantor Pairing Function,很快就会得到巨大的数字,我试图尽可能保持这些数字尽可能小。最好的情况是最大部分只适合Int32而不是long。我认为这应该是可能的,因为我的一对数字中的一个数字被50限制,但我想不出如何做到这一点。
int
是有界限的。 - haroldBigInteger
还要大吗? - Sinatr