[Edit]
+
0
-
0

JavaScript - decode Morse Code (International ITU standard)

9600
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
var CODES = { // Latin alphabet '.-': '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', // Arabic numerals '.----': '1', '..---': '2', '...--': '3', '....-': '4', '.....': '5', '-....': '6', '--...': '7', '---..': '8', '----.': '9', '-----': '0', // Punctuation marks and symbols '.-.-.-': '.', '--..--': ',', '.----.': "'", '.-..-.': '"', '..--.-': '_', // Nonstandard punctuation '---...': ':', '-.-.-.': ';', // Nonstandard punctuation '..--..': '?', '-.-.--': '!', // Nonstandard punctuation '-....-': '-', '.-.-.': '+', '-..-.': '/', '-.--.': '(', '-.--.-': ')', '-...-': '=', '.--.-.': '@', '.-...': '&', // Nonstandard punctuation '...-..-': '$' // Nonstandard punctuation }; function decodeLetter(code) { var result = CODES[code]; if (result == null) { // null or undefined throw new Error('Indicated Morse Code is incorrect.'); } return result; } function decodeMorse(code) { var result = ''; if (code) { var key = ''; for (var i = 0; i < code.length; ++i) { var symbol = code[i]; if (symbol === ' ') { result += decodeLetter(key); key = ''; if (++i >= code.length) { break; } symbol = code[i]; if (symbol === ' ' || symbol === '/') { if (++i >= code.length) { break; } symbol = code[i]; if (symbol === ' ') { result += ' '; continue; } throw new Error('Indicated Morse Code is incorrect.'); } } key += symbol; } result += decodeLetter(key); } return result; } // Usage example: var code = '.... . .-.. .-.. --- .-- --- .-. .-.. -..'; var text = decodeMorse(code); console.log(text); // hello world // References: // // 1. https://en.wikipedia.org/wiki/Morse_code
Reset