是否有一个公式是将2个坐标(a,b)和(c,d)变成一个整数的单向哈希,其中a,b,c和d是正数?此处的顺序无关紧要,因此给定(a, b), (c, d)(c, d), (a, b)时,公式应给出相同的结果。每个坐标点中实际数字的顺序很重要((a, b)(b, a)不同)。速度是关键,公式应快速且具有O(1)复杂度。

注意-我现在正在做的是使用Python的建筑物对两个坐标进行排序,然后将它们用作Python的内置字典(因此,内置哈希)中的键。我需要一种更快的方法来执行此操作,以便自己可以将两个坐标散列为一个整数。

最佳答案

您可以为此使用hash()frozenset

>>> hash(frozenset([(10, 20), (11, 22)]))
1735850283064117985
>>> hash(frozenset([(11, 22), (10, 20)]))
1735850283064117985

卡住集是专门为这种用例设计的(即,卡住集是本质上无序的,不可更改且可哈希化的集合)。

希望这个答案将您的权利带给您所需要的:-)

关于python - 快速排序2个坐标的顺序无关紧要?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39324220/

10-12 03:03