टिप्पणियों से डेविड रिचर्जी का हवाला देते हुए:
चूंकि message E का प्रतिनिधित्व करता है और T का प्रतिनिधित्व करता है, रिक्त स्थान के बिना किसी भी मोर्स संदेश को में एक स्ट्रिंग के रूप में व्याख्या किया जा सकता है{E,T}∗
इसके अलावा, चूंकि ए, आई, एम और एन दो मोर्स पात्रों के चार संभावित संयोजनों (,-, ⋅, -, -⋅⋅, क्रमशः) द्वारा दर्शाए गए हैं, बिना रिक्त स्थान के किसी भी संदेश को स्ट्रिंग के रूप में भी व्याख्या किया जा सकता है। । ध्यान दें कि लंबाई> 1 के किसी भी मोर्स संदेश के लिए, यह डेविड की व्याख्या से अलग है। इस प्रकार, अद्वितीय व्याख्या वाले एकमात्र संदेश लंबाई 1 के हैं (और, मुझे लगता है, 0, यदि वह एक संदेश के रूप में गिना जाता है) - अर्थात्, ⋅, ई का प्रतिनिधित्व करता है, और -, टी का प्रतिनिधित्व करता है।{A,I,M,N}∗{E,T}?
यहाँ कुछ जावास्क्रिप्ट है जो आपको .
और स्ट्रिंग की सभी संभावित व्याख्याएँ बताएगा -
। 22 सेकंड तक की लंबाई एक सेकंड के भीतर चलती है, लेकिन इससे अधिक कुछ भी धीमी गति से शुरू होता है - मैं उदाहरण के लिए, इसके साथ हेलो वर्ल्ड को डिकोड करने की कोशिश नहीं करूंगा। आप अपने ब्राउज़र में एक JavaScript कंसोल खोलकर पॉप कर सकते हैं, इस में पेस्ट, और फिर उदाहरण के लिए, कहते हैं, decode('......-...-..---')
। (इस उदाहरण में, प्रविष्टि # 2446 इच्छित स्ट्रिंग "HELLO" है।)
var decode = function(code) {
var cache = {
'0': ['']
};
for(var start = 0;start < code.length;start++) {
for(var len = 1;len < 6;len++) {
if(start + len > code.length) continue;
if(!cache[start + len]) cache[start + len] = [];
var curCode = code.slice(start, start + len);
if(dict[curCode]) {
for(var i_start = 0;i_start < cache[start].length;i_start++) {
cache[start + len].push(cache[start][i_start] + dict[curCode]);
}
}
}
}
return cache[code.length];
};
var dict = {
'.-': 'A',
'-...': 'B',
'-.-.': 'C',
'-..': 'D',
'.': 'E',
'..-.': 'F',
'--.': 'G',
'....': 'H',
'..': 'I',
'.---': 'J',
'-.-': 'K',
'.-..': 'L',
'--': 'M',
'-.': 'N',
'---': 'O',
'.--.': 'P',
'--.-': 'Q',
'.-.': 'R',
'...': 'S',
'-': 'T',
'..-': 'U',
'...-': 'V',
'.--': 'W',
'-..-': 'X',
'-.--': 'Y',
'--..': 'Z',
'.----': '1',
'..---': '2',
'...--': '3',
'....-': '4',
'.....': '5',
'-....': '6',
'--...': '7',
'---..': '8',
'----.': '9',
'-----': '0'
};
वास्तविक शब्दों के केवल तार के लिए इसे कम करने के लिए कोड थोड़ा लंबा है, इसलिए मैंने इसे यहां रखा है । यह नोड.जेएस के तहत चलता है और एक फ़ाइल की अपेक्षा करता है /usr/share/dict/words-2500
। मैं जिस शब्दकोश का उपयोग कर रहा हूं वह यहां पाया जा सकता है । यह भोला नहीं है - यह जैसे-जैसे आगे बढ़ता जाता है, वैसे-वैसे यह बड़े इनपुट्स पर ज्यादा तेज चलता है।
शब्दकोश में एक शीर्ष -2500 शब्दों की सूची होती है, जो मैंने इंटरनेट पर कहीं, शून्य से 1-1, 2- और 3- पत्र के संयोजन में पाया, जिसे मैंने शब्दों को समझा। यह एल्गोरिथ्म चुनने के लिए बहुत से छोटे शब्दों को रखने के लिए संवेदनशील है, और यदि आप अनुमति देते हैं, तो, प्रत्येक व्यक्तिगत पत्र को एक शब्द के रूप में (मैं आपको देख रहा हूं /usr/share/dict/words
) धीमा कर देता हूं ।
एल्गोरिथ्म शब्दों की संख्या के आधार पर छंटनी करके समाप्त होता है, इसलिए "दिलचस्प" वाले उम्मीद से शीर्ष पर होंगे। यह HELLO WORLD
एक दूसरे के नीचे चल रहा है और पहली हिट के रूप में अपेक्षित वाक्यांश को वापस करने पर बहुत अच्छा काम करता है । इससे मुझे यह भी पता चला कि DATA SCIENTIST
(केवल अन्य वाक्यांश मैंने कोशिश की) मोर्स कोड के समान ही है NEW REAL INDIA
।
संपादित करें: मैंने कुछ मिनटों के लिए और अधिक रोचक खोज की। शब्द SPACES
और SWITCH
morsagrams हैं। अब तक वे सबसे लंबी एकल-शब्द जोड़ी हैं जो मैंने पाया है।