python - تجزئة سريع لمدة 2 الإحداثيات حيث لا يهم النظام؟



hash hashmap (1)

يمكنك استخدام تجزئة () من فروزنزيت لهذا.

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

تم تصميم فروزنزيتس خصيصا لهذا النوع من حالة الاستخدام (أي فروزنزيتس هي مجموعات غير مرتبة جوهريا التي هي غير قابل للتغيير و هاشابل).

نأمل أن تأخذ هذه الإجابة حقك في ما تحتاجه :-)

هل هناك صيغة هي تجزئة طريقة واحدة للإحداثيتين (أ، ب) و (ج، د) إلى عدد صحيح واحد حيث أ، ب، ج، د إيجابية؟ لا يهم الأمر هنا، لذلك يجب أن تعطي الصيغة نفس النتائج عند إعطاء (a, b), (c, d) و (c, d), (a, b) . ترتيب الأرقام الفعلية في كل مسألة نقطة تنسيق ( (a, b) ليست هي نفسها (b, a) ). السرعة هي المفتاح هنا، يجب أن تكون الصيغة سريعة ويكون O (1) التعقيد.

ملاحظة - ما أفعله الآن هو فرز الإحداثيين باستخدام مبنى بيثون في النوع، ومن ثم استخدامها كمفاتيح في القاموس المدمج في بايثون (لذلك، المدمج في التجزئة). أحتاج إلى طريقة أسرع للقيام بذلك حتى أستطيع أن تجزئة اثنين ينسق لعدد صحيح نفسي.





hashcode