अंतर-ऑफ-द रकम समाधान द्वारा प्रस्तावित टोबी और मारियो वास्तव में जिसके लिए हम एक (निरंतर समय) द्विआधारी आपरेशन परिभाषित कर सकते हैं किसी भी अन्य डेटा प्रकार के लिए सामान्यीकृत किया जा सकता ⊕ है कि:Θ ( एन )⊕
- कुल में, इस तरह है कि किसी भी मूल्यों के लिए और ख , एक ⊕ ख परिभाषित किया गया है एक ही प्रकार के (या इसके बारे में कुछ उचित महाप्रकार, जिसके लिए ऑपरेटर के कम से कम ⊕ अभी भी परिभाषित किया गया है);एखएक ⊕ बी⊕
- साहचर्य , ऐसी है कि ;एक ⊕ ( ख ⊕ ग ) = ( एक ⊕ ख ) ⊕ ग
- विनिमेय , ऐसी है कि ; तथाएक ⊕ ख = ख ⊕ एक
- cancellative एक व्युत्क्रम ऑपरेटर वहां मौजूद हैं, जैसे कि कि संतुष्ट करता है ( एक ⊕ ख ) ⊖ ख = एक । तकनीकी तौर पर, यह उलटा आपरेशन भी जरूरी निरंतर समय हो सकता है, के रूप में "घटाकर" दो की रकम नहीं है जब तक n तत्व एक से अधिक नहीं ले करता है हे ( एन ) समय।⊖( एक ⊕ ख ) ⊖ ख = एकnओ ( एन )
(यदि प्रकार केवल विशिष्ट मानों की एक सीमित संख्या ले सकता है, तो ये गुण इसे एबिलियन समूह में बनाने के लिए पर्याप्त हैं ; भले ही ऐसा न हो, यह कम से कम एक कमिटेटिव कैंसिलेटिव सेग्मेंट होगा ।)
इस तरह के एक आपरेशन का उपयोग करते हुए , हम एक सरणी के "राशि" को परिभाषित कर सकते एक = ( एक 1 , एक 2 , ... , एक एन ) के रूप में ( ⊕⊕a = ( a)1, ए2, … , एn) यह देखते हुए एक और सरणी ख = ( ख 1 , बी 2 , ... , ख n , ख n + 1 ) सभी तत्वों वाली एक के अलावा एक अतिरिक्त तत्व एक्स , हम इस प्रकार है ( ⊕
( ⊕ए ) = ए1⊕ ए2⊕ ⋯ ⊕ एकn।
b = ( b)1, बी2, ... , खn, बीएन + १)एएक्स , और इसलिए हम कंप्यूटिंग द्वारा इस अतिरिक्त तत्व पा सकते हैं:
एक्स = ( ⊕( ⊕b ) = ( ⊕ )a ) ⊕ xx = ( ⊕)ख ) ⊖ ( ⊕ए ) ।
उदाहरण के लिए, यदि सरणियों में मानों पूर्णांक हैं, तो इसके लिए (या पूर्णांक मॉड्यूलर अलावा परिमित-लंबाई पूर्णांकों प्रकार के लिए) ऑपरेटर के रूप में इस्तेमाल किया जा सकता , उलटा आपरेशन के रूप में घटाव के साथ ⊖ । वैकल्पिक रूप से, के लिए किसी भी डेटा प्रकार जिनके मान निर्धारित लंबाई बिट श्रृंखला के रूप में प्रतिनिधित्व किया जा सकता है, हम उपयोग कर सकते हैं XOR बिटवाइज़ दोनों के रूप में ⊕ और ⊖ ।⊕⊖⊕⊖
आम तौर पर, हम बिटवेअर XOR विधि को चर लंबाई के तारों पर भी लागू कर सकते हैं, उन्हें आवश्यक रूप से एक ही लंबाई तक पैडिंग करके, जब तक कि हमारे पास अंत में गद्दी को उलटने के लिए कोई रास्ता नहीं है।
कुछ मामलों में, यह तुच्छ है। उदाहरण के लिए, C- शैली के शून्य समाप्त बाइट स्ट्रिंग्स को स्पष्ट रूप से अपनी स्वयं की लंबाई एन्कोड किया जाता है, इसलिए उनके लिए यह विधि लागू करना तुच्छ है: जब XORing दो स्ट्रिंग्स, छोटे को अपनी बाइट मैच के लिए null बाइट्स के साथ पैड देता है, और किसी भी अतिरिक्त ट्रेलिंग नल को ट्रिम करता है अंतिम परिणाम। ध्यान दें कि मध्यवर्ती XOR- राशि स्ट्रिंग्स में नल बाइट्स हो सकते हैं, हालांकि, आपको उनकी लंबाई स्पष्ट रूप से संग्रहीत करने की आवश्यकता होगी (लेकिन आपको केवल उनमें से एक या दो की आवश्यकता होगी)।
अधिक आम तौर पर, एक विधि जो मनमाने ढंग से बिट स्ट्रिंग्स के लिए काम करेगी, वह एक-बिट पैडिंग को लागू करने के लिए होगी , जहां प्रत्येक इनपुट बिटस्ट्रिंग को बिट के साथ गद्देदार किया जाता है और फिर (गद्देदार) की लंबाई से मिलान करने के लिए आवश्यक 0 बिट्स के साथ सबसे लंबा इनपुट स्ट्रिंग। (बेशक, इस पैडिंग को पहले से स्पष्ट रूप से किए जाने की आवश्यकता नहीं है; हम XOR राशि की गणना करते समय आवश्यकतानुसार इसे लागू कर सकते हैं।) अंत में, हमें बस किसी भी अनुगामी 0 बिट्स और अंतिम 1 बिट से पट्टी करने की आवश्यकता है । परिणाम। वैकल्पिक रूप से, यदि हम जानते थे कि तार अधिकतम 2 32 पर थे1001232बाइट्स लंबे समय तक, हम प्रत्येक स्ट्रिंग की लंबाई को 32-बिट पूर्णांक के रूप में एन्कोड कर सकते हैं और इसे स्ट्रिंग पर प्रीपेन्ड कर सकते हैं। या हम कुछ उपसर्ग कोड का उपयोग करके मनमानी स्ट्रिंग लंबाई भी सांकेतिक शब्दों में बदलना कर सकते हैं , और उन स्ट्रिंग्स को प्रस्तुत कर सकते हैं। अन्य संभावित एनकोडिंग भी मौजूद हैं।
वास्तव में, चूंकि कंप्यूटर पर किसी भी प्रकार के डेटा को दर्शाया जा सकता है, परिभाषा के अनुसार, एक परिमित-लंबाई बिट स्ट्रिंग के रूप में दर्शाया जाता है, इस पद्धति से समस्या का एक सामान्य समाधान निकलता है।Θ ( एन )
एकमात्र संभावित मुश्किल हिस्सा यह है कि, काम को रद्द करने के लिए, हमें प्रत्येक मूल्य के लिए एक अद्वितीय विहित बिटस्ट्रिंग प्रतिनिधित्व चुनने की आवश्यकता है, जो मुश्किल हो सकता है (वास्तव में, संभवत: कम्प्यूटेशनल रूप से अनुचित भी) यदि दो सरणियों में इनपुट मान दिए जा सकते हैं। विभिन्न समकक्ष अभ्यावेदन में। हालाँकि, यह इस पद्धति की एक विशिष्ट कमजोरी नहीं है; इस समस्या को हल करने के किसी अन्य तरीके को भी विफल किया जा सकता है यदि इनपुट में उन मानों को शामिल करने की अनुमति है जिनकी तुल्यता अपरिहार्य है।