इनपुट को सरल बनाने के लिए मापांक का उपयोग करना
यह एक टिप का बहुत सरल हो सकता है, इसलिए यदि यह है तो मैं इसे बदल दूंगा या इसे हटा दूंगा।
मान लें कि आप दो वर्णों का इनपुट लेना चाहते हैं, "a" और "b" और क्रमशः 1, और 2 वापस करें। आप शायद इसके लिए सशर्त का उपयोग करेंगे, क्योंकि यह सबसे अधिक समझ में आता है, और मैं इस विशिष्ट उदाहरण के लिए अधिक संघनित रूप का उपयोग करूंगा।
i:"a")+1+n
यह देखने के लिए जाँच करता है कि इनपुट "a" से अधिक है और 1. जोड़ता है "चूंकि" a "0 और" b "1 होगा, यह 1 और 2 देगा। यह कार्य बहुत अच्छी तरह से करता है, लेकिन हमारे मामले में आदानों, हम आगे भी जा सकते हैं।
i:3%n
Mod 3, 97 में, जो "a" s संख्यात्मक समतुल्य है, 1 बन जाता है, और 98, जो "b" s है, बन जाता है। 2. दो अलग-अलग संख्याओं के लिए, एक ऐसे मॉड की गारंटी दी जाती है जो दोनों के लिए अद्वितीय परिणाम देता है। दो से अधिक के लिए, एक ऐसा माध्यम है जो अद्वितीय परिणाम देता है, लेकिन मेरे पास सबसे सरल तरीके से सबसे छोटा खोजने के लिए गणितीय कौशल नहीं है (उदाहरण के लिए यदि आपके पास सेट {100,101,102,103} है, तो मोड 104 के लिए अद्वितीय परिणाम देगा इसमें प्रत्येक मूल्य लेकिन बहुत सहायक फैशन में नहीं)। हालाँकि, ज्यादातर मामलों में, इनपुट को कुछ वर्णानुक्रमिक वर्णों तक ही सीमित रखने के कारण, आप अक्सर एक मॉड खोज सकते हैं जो काम करता है।
सबसे छोटे मापांक को खोजने के लिए जो दो संख्याओं के लिए अद्वितीय परिणाम देता है, और, और, बी, आप निम्नानुसार करते हैं। A और b ( |a - b|
) के अंतर का पूर्ण मान लें और सबसे छोटी संख्या, n खोजें, जो इसे विभाजित नहीं करता है। उदाहरण के लिए 97 और 98, |98 - 97| = 1
और इसलिए 2 सबसे छोटा मॉड होगा (लेकिन हमारे परीक्षण कार्यक्रम के लिए, यह 97 के लिए 1 और 98 के लिए 0 देता है, इसलिए मॉड 3 बेहतर है)।