2022-02-28 21:16:41 +00:00
|
|
|
const MORSE_MAP = {
|
2022-02-28 21:38:31 +00:00
|
|
|
'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': '-----',
|
|
|
|
'.': '.-.-.-',
|
|
|
|
'?': '..--..',
|
|
|
|
'!': '-.-.--',
|
|
|
|
'=': '-...-',
|
|
|
|
'+': '.-.-.',
|
|
|
|
'-': '-...-'
|
2022-02-28 21:16:41 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
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":
|
|
|
|
[
|
2022-02-28 21:38:31 +00:00
|
|
|
"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",
|
2022-02-28 22:27:51 +00:00
|
|
|
"DLD",
|
|
|
|
"DLVD",
|
2022-02-28 21:38:31 +00:00
|
|
|
"DN",
|
|
|
|
"DR",
|
|
|
|
"DX",
|
|
|
|
"EL",
|
|
|
|
"ES",
|
|
|
|
"FB",
|
|
|
|
"FER",
|
|
|
|
"FM",
|
|
|
|
"GA",
|
|
|
|
"GB",
|
|
|
|
"GD",
|
|
|
|
"GE",
|
|
|
|
"GESS",
|
|
|
|
"GG",
|
|
|
|
"GM",
|
|
|
|
"GN",
|
|
|
|
"GND",
|
|
|
|
"GUD",
|
|
|
|
"GV",
|
|
|
|
"HH",
|
2022-02-28 22:27:51 +00:00
|
|
|
"HI",
|
2022-02-28 21:38:31 +00:00
|
|
|
"HR",
|
|
|
|
"HV",
|
|
|
|
"HW",
|
|
|
|
"IMI",
|
|
|
|
"LNG",
|
|
|
|
"LTR",
|
|
|
|
"LVG",
|
2022-02-28 22:27:51 +00:00
|
|
|
"MA",
|
|
|
|
"MILLS",
|
2022-02-28 21:38:31 +00:00
|
|
|
"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",
|
2022-02-28 22:27:51 +00:00
|
|
|
"TKS",
|
|
|
|
"TNX",
|
|
|
|
"TR",
|
|
|
|
"TX",
|
2022-02-28 21:38:31 +00:00
|
|
|
"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"
|
2022-02-28 21:16:41 +00:00
|
|
|
]
|
|
|
|
};
|
|
|
|
|
|
|
|
const ALL_WORDS = COMMON_WORDS.commonWords;
|
|
|
|
|
2022-02-28 21:38:31 +00:00
|
|
|
const EASY_WORDS = COMMON_WORDS.commonWords.filter(word => word.length < 5);
|