यह कोड गोल्फ हाल ही के डेली डब्ल्यूटीएफ लेख से प्रेरित था जिसे आप सच नहीं संभाल सकते हैं! , जो एक स्ट्रिंग तुलना के रूप में लिखा है:
String yes = "YES";
if ((delay.hashCode()) == yes.hashCode())
स्टीव की टीम के लिए यह परेशानी का कारण होगा अगर जावा का String.hashCode
तरीका सिर्फ उसी तरीके से लागू किया गया हो "YES".hashCode() == "NO".hashCode()
। इसलिए, मैं यहाँ प्रस्तावित प्रस्ताव है:
जितना संभव हो, कुछ वर्णों में लिखें, एक हैश फ़ंक्शन (मैं इसे कॉल करूँगा
h
) एक स्ट्रिंग पैरामीटर और पूर्णांक रिटर्न मान के साथ, जैसे किh("YES")
बराबरh("NO")
।
बेशक, यह एक फ़ंक्शन के साथ करने के लिए तुच्छ होगा def h(s): return 0
, जो हर स्ट्रिंग के लिए हैश टकराव बनाता है । इस चुनौती को और दिलचस्प बनाने के लिए, आपको निम्नलिखित अतिरिक्त नियम का पालन करना होगा:
की अन्य तीन या कम अपरकेस ASCII अक्षरों (से मिलकर 18 277 संभव तार
^[A-Z]{0,3}$
), वहाँ होना चाहिए कोई हैश टकराव।
स्पष्टीकरण (हेइको ओबर्डिएक द्वारा इंगित): इनपुट स्ट्रिंग में वर्णों के अलावा अन्य हो सकते हैं A-Z
, और आपके कोड को मनमाने तार करने में सक्षम होना चाहिए। (आप कर सकते हैं, हालांकि, मान लेते हैं कि इनपुट है एक चरित्र स्ट्रिंग के बजाय एक नल पॉइंटर या कुछ अन्य डेटा प्रकार का ऑब्जेक्ट।) हालांकि, यह कोई बात नहीं क्या वापसी मान तार कि मेल न खाने वाले है ^[A-Z]{0,3}$
जब तक, यह एक पूर्णांक है।
इसके अलावा, इस समारोह के इरादे को पूरा करने के लिए:
आपके कोड में वर्ण या स्ट्रिंग साहित्यिक के भीतर 'Y', 'E', 'S', 'N', या 'O' (या तो ऊपरी- या लोअरकेस में) कोई भी अक्षर शामिल नहीं होना चाहिए।
बेशक, इस प्रतिबंध भाषा कीवर्ड पर लागू नहीं होता है, तो else
, return
आदि ठीक कर रहे हैं।
YESNO
इस विशिष्ट अपवाद की जांच करने के लिए संख्यात्मक ASCII मूल्यों का उपयोग कर सकते हैं।