की मॉड्यूलर तुलना यह एक बहुत ही सरल सवाल की तरह लगता है, लेकिन वहाँ है आश्चर्यजनक रूप से कम इंटरनेट पर इसके बारे में लिखा है, और मैं एक कठिन समय अपने दम पर सही ढंग से लागू करने आ रही है। जावा में ASCII वर्णों पर एक मॉड्यूलर तुलना फ़ंक्शन को कार्यान्वित करने का सबसे अच्छा तरीका क्या है, जैसे तुलना "वर्णमाला के अंत" के आसपास "लपेटती है"? मैं इसे "बीच" फ़ंक्शन के लिए उपयोग करना चाहता हूं जो मनमाने ढंग से स्थानों पर पूरे वर्णमाला को विभाजित कर सकता है, और पूछा जाता है कि 'y' 'x' और 'b' के बीच है या नहीं, तो सही ढंग से "सत्य" लौटाएं।पात्रों
मैं पहले से ही सभी सवाल और जवाब है कि के बारे में मॉड्यूलर अंकगणित पात्रों पर बात मिल गया है, इसलिए मुझे पता है कि इस तरह के कोड के साथ मॉड्यूलर इसके अलावा करने के लिए (चरित्र स्थानांतरण):
char shifted = (((original - 'a') + 1) % 26) + 'a';
हालांकि, यह जावा के मॉड्यूलर अंकगणितीय कार्यों में निर्मित है, जो तुलना के बराबर नहीं है। यहां तक कि अगर मैं सादे स्याही का उपयोग कर रहा था, तो मेरे पास जावा से पूछने का कोई तरीका नहीं है यदि < बी < सी मॉड 26 (जो = = 24, बी = 25, और सी = 1) को सच करना चाहिए।
तो सामान्य सवाल यह है कि जावा में मॉड्यूलर तुलना संचालन को लागू करने का सबसे अच्छा तरीका क्या है? यदि यह एक समस्या बहुत मुश्किल है, तो ASCII वर्णमाला के लिए काम करने के लिए ऐसी तुलना करने के लिए कम से कम एक तरीका है?
ध्यान दें कि "मॉड्यूलर तुलना" बाइनरी तुलना के लिए समझ में नहीं आता है: मॉड्यूलर अंकगणित में कोई "कम से कम" आदेश नहीं है। एक "बीच" चीज अभी भी संभव है, हालांकि, आपका प्रश्न remians मान्य है। – MvG