const MORSE_MAP = { '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': '-----', '.': '.-.-.-', '?': '..--..', '!': '-.-.--', '=': '-...-', '+': '.-.-.', '-': '-....-' }; const REVERSE_MORSE_MAP = function() { const reversed = {}; Object.keys(MORSE_MAP).forEach(key => { reversed[MORSE_MAP[key]] = key; }); return reversed; }(); // Thanks to https://github.com/dariusk/corpora/blob/master/data/words/common.json (CC0 license) const COMMON_WORDS = { "description": "Common English words.", "commonWords": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "?", "!", "=", "+", "-", "QRG", "QRI", "QRK", "QRL", "QRM", "QRN", "QRO", "QRP", "QRQ", "QRR", "QRRR", "QRS", "QRT", "QRU", "QRV", "QRX", "QRZ", "QSA", "QSB", "QSD", "QSK", "QSL", "QSM", "QSN", "QSO", "QSP", "QST", "QSX", "QSY", "QTA", "QTC", "QTH", "QTR", "AA", "AB", "ABT", "ADEE", "ADR", "AGN", "AM", "ANT", "BCI", "BCL", "BCNU", "BK", "BN", "BT", "BTR", "Bug", "C", "CFM", "CK", "CKT", "CL", "CLBK", "CLD", "CLG", "CNT", "CONDX", "CQ", "CU", "CUL", "CUM", "CW", "DA", "DE", "DIFF", "DLD", "DLVD", "DN", "DR", "DX", "EL", "ES", "FB", "FER", "FM", "GA", "GB", "GD", "GE", "GESS", "GG", "GM", "GN", "GND", "GUD", "GV", "HH", "HI", "HR", "HV", "HW", "IMI", "LNG", "LTR", "LVG", "MA", "MILLS", "MSG", "N", "NCS", "ND", "NM", "NR", "NW", "OB", "OC", "OM", "OP", "OPR", "OT", "PBL", "PKG", "PSE", "PT", "PWR", "PX", "R", "RC", "RCD", "RCVR", "REF", "RFI", "RIG", "RPT", "RTTY", "RST", "RX", "SASE", "SED", "SEZ", "SGD", "SIG", "SINE", "SKED", "SRI", "SS", "SSB", "STN", "SUM", "SVC", "T", "TFC", "TMW", "TKS", "TNX", "TR", "TX", "T/R", "TRIX", "TT", "TTS", "TU", "TVI", "TX", "TXT", "U", "UR", "URS", "VFB", "VFO", "VY", "W", "WA", "WD", "WDS", "WKD", "WKG", "WPM", "WRD", "WX", "TXVR", "XMTR", "XTL", "XYL", "YF", "YL", "YR", "73", "KG7DAB", "KF7WNR", "K7LWA", "W7UUL", "KB7LTT", "WA2AFT", "KE7BSC", "AB7MK", "KF7ZZB", "N1MNB", "KF7YKN", "K7IS", "KJ7ZOL", "N1SXY", "KF7BMP", "KF4ELO", "KF7SWZ", "K7ETA", "KF5CZU", "KI7MLV", "K7TJA", "N7GRN", "KG7AHK", "KG7CMP", "KG7GWH", "KI7HQJ", "K7PWN", "KI7ZEJ", "AG7Z", "KI7QVE", "W1ZKY", "KG7PKS", "KD7NKS", "KF7TIH" ] }; const ALL_WORDS = COMMON_WORDS.commonWords; const EASY_WORDS = COMMON_WORDS.commonWords.filter(word => word.length < 5);