據我瞭解你的問題,你正在尋找一種方法來創建一對一的函數,以便使用另外兩個函數生成一個整數。看看下面的圖片,這是實現它的功能:
談到Python實現,這是我爲它的代碼(對於Python 3.X):
def pack(i1, i2):
if i1 > i2:
return i1**2 + i2
else:
return (i2 + 1)**2 - 1 - i1
def unpack(i):
mx = int(i**0.5)
s = (mx**2 + (mx + 1)**2 - 1) // 2
if s >= i:
return mx, mx - s + i
else:
return mx - i + s, mx
i = pack(3, 5)
print(i) # 32
i1, i2, = unpack(i)
print(i1, i2) # 3 5
print(pack(400, 200)) # 160200
print(unpack(160200)) # (400, 200)
print(pack(300, 100)) # 90100
print(unpack(90100)) # (300, 100)
print(pack(500, 60)) # 250060
print(unpack(250060)) # (500, 60)
該指數獨一無二,因爲我總是能夠計算出最初的兩個整數。
我不認爲SO是這類問題的正確位置。當你在尋找一對一的功能時,這是一個數學問題,而不是編程問題。 – DeepSpace
兩列的限制是什麼 - Col0最小值,最大值和Col1類似? – Divakar