इस कोड-चुनौती में आप 140 बाइट्स 1 या उससे कम स्रोत कोड में हैश फ़ंक्शन लिखेंगे । हैश फ़ंक्शन को इनपुट के रूप में एक ASCII स्ट्रिंग लेना चाहिए, और आउटपुट के रूप में 24-बिट अहस्ताक्षरित पूर्णांक ([0, 2 24 -1]) वापस करना चाहिए।
आपका हैश फ़ंक्शन इस बड़े ब्रिटिश अंग्रेजी शब्दकोश 2 में हर शब्द के लिए मूल्यांकन किया जाएगा । आपका स्कोर शब्दों की राशि है जो एक अन्य शब्द (एक टकराव) के साथ एक हैश मूल्य साझा करता है।
सबसे कम स्कोर जीतता है, पहले पोस्टर से टूट जाता है।
परीक्षण का मामला
सबमिट करने से पहले, निम्नलिखित इनपुट पर अपनी स्कोरिंग स्क्रिप्ट का परीक्षण करें:
duplicate
duplicate
duplicate
duplicate
यदि यह 4 के अलावा कोई भी अंक देता है, तो यह छोटी गाड़ी है।
स्पष्ट नियम:
- आपका हैश फ़ंक्शन एक एकल स्ट्रिंग पर चलना चाहिए, न कि एक संपूर्ण सरणी पर। साथ ही, आपका हैश फ़ंक्शन इनपुट स्ट्रिंग और आउटपुट पूर्णांक की तुलना में कोई अन्य I / O नहीं कर सकता है।
- अंतर्निहित हैश फ़ंक्शंस या समान कार्यक्षमता (उदाहरण के लिए स्क्रैम्बल बाइट्स के लिए एन्क्रिप्शन) को बंद कर दिया गया है।
- आपका हैश फ़ंक्शन नियतात्मक होना चाहिए।
- स्कोरिंग इनपुट के लिए विशेष रूप से अनुकूलन करने वाले अधिकांश अन्य प्रतियोगिताओं के विपरीत अनुमति है।
1 मुझे पता है कि ट्विटर बाइट्स के बजाय वर्णों को सीमित करता है, लेकिन सादगी के लिए हम इस चुनौती के लिए एक सीमा के रूप में बाइट्स का उपयोग करेंगे।
2 किसी भी गैर-एएससीआईआई शब्द को हटाते हुए, डेबियन के मलबे के आकार से संशोधित ।
D=340275
शब्दों और R=2^24
हैश आउटपुट के साथ, एक यादृच्छिक हैश में एक अपेक्षित D^2/(2*R) = 3450
टकराने वाले जोड़े होते हैं, जिनमें से कुछ ओवरलैप होते हैं। एक अपेक्षित D^3/(6*R^2) = 23
टॉलरिंग ट्राइबल्स और एक बड़ी संख्या में टकराने की एक नगण्य संख्या है, जिसका अर्थ है कि ये ट्राइबल्स संभावित असहमति हैं। यह एक अपेक्षित 6829
शब्द देता है जो हैश मान साझा करता है, ~ 70
त्रिक में और बाकी जोड़े में। मानक विचलन का अनुमान है 118
, इसलिए <6200
एक यादृच्छिक हैश के साथ मिलना लगभग 5 सिग्मा घटना है।
Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch's
? क्या...?