/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.nio.file.*;
import java.util.stream.*;
import java.util.regex.Pattern;
/* Name of the class has to be "Main" only if the class is public. */
class Morse
{
private static final Map
<String, String
> morseAlphabet
= new HashMap
<>();
static {
morseAlphabet.put("", " ");
morseAlphabet.put(".-", "A");
morseAlphabet.put("-...", "B");
morseAlphabet.put("-.-.", "C");
morseAlphabet.put("-..", "D");
morseAlphabet.put(".", "E");
morseAlphabet.put("..-.", "F");
morseAlphabet.put("--.", "G");
morseAlphabet.put("....", "H");
morseAlphabet.put("..", "I");
morseAlphabet.put(".---", "J");
morseAlphabet.put("-.-", "K");
morseAlphabet.put(".-..", "L");
morseAlphabet.put("--", "M");
morseAlphabet.put("-.", "N");
morseAlphabet.put("---", "O");
morseAlphabet.put(".--.", "P");
morseAlphabet.put("--.-", "Q");
morseAlphabet.put(".-.", "R");
morseAlphabet.put("...", "S");
morseAlphabet.put("-", "T");
morseAlphabet.put("..-", "U");
morseAlphabet.put("...-", "V");
morseAlphabet.put(".--", "W");
morseAlphabet.put("-..-", "X");
morseAlphabet.put("-.--", "Y");
morseAlphabet.put("--..", "Z");
morseAlphabet.put("-----", "0");
morseAlphabet.put(".----", "1");
morseAlphabet.put("..---", "2");
morseAlphabet.put("...--", "3");
morseAlphabet.put("....-", "4");
morseAlphabet.put(".....", "5");
morseAlphabet.put("-....", "6");
morseAlphabet.put("--...", "7");
morseAlphabet.put("---..", "8");
morseAlphabet.put("----.", "9");
}
private static final Pattern charsplit = Pattern.compile(" ");
return charsplit.splitAsStream(line)
.map(letter -> morseAlphabet.get(letter))
.collect(Collectors.joining(""));
}
public static final String decode
(List
<String
> data
) { .map(Morse::decodeLine)
.collect(Collectors.joining("\n"));
return output;
}
{
String out
= Morse.
decode(Arrays.
asList("-.-. --- -.. . .-. . ...- .. . .--",
"..--- -. -.. -- --- -. .. - --- .-.",
"..-. .-. --- -- -.-. --- -.. . . ...- .- .-..")); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLm5pby5maWxlLio7CmltcG9ydCBqYXZhLnV0aWwuc3RyZWFtLio7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKCgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgTW9yc2UKewoJCiAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8U3RyaW5nLCBTdHJpbmc+IG1vcnNlQWxwaGFiZXQgPSBuZXcgSGFzaE1hcDw+KCk7CgogICAgc3RhdGljIHsKICAgIAltb3JzZUFscGhhYmV0LnB1dCgiIiwgIiAiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi0iLCAiQSIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCItLi4uIiwgIkIiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLS4tLiIsICJDIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0uLiIsICJEIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi4iLCAiRSIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCIuLi0uIiwgIkYiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLS0uIiwgIkciKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi4uLiIsICJIIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi4uIiwgIkkiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi0tLSIsICJKIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0uLSIsICJLIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi4tLi4iLCAiTCIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCItLSIsICJNIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0uIiwgIk4iKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLS0tIiwgIk8iKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi0tLiIsICJQIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0tLi0iLCAiUSIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCIuLS4iLCAiUiIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCIuLi4iLCAiUyIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCItIiwgIlQiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi4tIiwgIlUiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi4uLSIsICJWIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi4tLSIsICJXIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0uLi0iLCAiWCIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCItLi0tIiwgIlkiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLS0uLiIsICJaIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0tLS0tIiwgIjAiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi0tLS0iLCAiMSIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCIuLi0tLSIsICIyIik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi4uLi0tIiwgIjMiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLi4uLi0iLCAiNCIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCIuLi4uLiIsICI1Iik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0uLi4uIiwgIjYiKTsKICAgICAgICBtb3JzZUFscGhhYmV0LnB1dCgiLS0uLi4iLCAiNyIpOwogICAgICAgIG1vcnNlQWxwaGFiZXQucHV0KCItLS0uLiIsICI4Iik7CiAgICAgICAgbW9yc2VBbHBoYWJldC5wdXQoIi0tLS0uIiwgIjkiKTsKICAgIH0KCQoJCglwcml2YXRlIHN0YXRpYyBmaW5hbCBQYXR0ZXJuIGNoYXJzcGxpdCA9IFBhdHRlcm4uY29tcGlsZSgiICIpOwoJCglwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVjb2RlTGluZShTdHJpbmcgbGluZSkgewoJCXJldHVybiBjaGFyc3BsaXQuc3BsaXRBc1N0cmVhbShsaW5lKQoJICAgICAgICAgICAgICAgLm1hcChsZXR0ZXIgLT4gbW9yc2VBbHBoYWJldC5nZXQobGV0dGVyKSkKCSAgICAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMuam9pbmluZygiIikpOwoJfQoJCglwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkZWNvZGUoTGlzdDxTdHJpbmc+IGRhdGEpIHsKCQlTdHJpbmcgb3V0cHV0ID0gZGF0YS5zdHJlYW0oKQoJICAgICAubWFwKE1vcnNlOjpkZWNvZGVMaW5lKQoJICAgICAuY29sbGVjdChDb2xsZWN0b3JzLmpvaW5pbmcoIlxuIikpOwoJICAgICByZXR1cm4gb3V0cHV0OwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgb3V0ID0gTW9yc2UuZGVjb2RlKEFycmF5cy5hc0xpc3QoIi0uLS4gLS0tIC0uLiAuICAuLS4gLiAuLi4tIC4uIC4gLi0tIiwgIi4uLS0tIC0uIC0uLiAgLS0gLS0tIC0uIC4uIC0gLS0tIC4tLiIsICIuLi0uIC4tLiAtLS0gLS0gIC0uLS4gLS0tIC0uLiAuIC4gLi4uLSAuLSAuLS4uIikpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihvdXQpOwogICAgfQoKfQ==