On se retrouve aujourd'hui pour la solution du précédent #KataOfTheWeek proposé par Jonathan en début de semaine !
En java:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
public class MorseDecoder {
private static final String LETTER_SEPARATOR = " ";
private static final String WORD_SEPARATOR = "/";
public static final Map<String, String> CODES;
static {
CODES = new HashMap<>();
CODES.put(".-", "a");
CODES.put("-...", "b");
CODES.put("-.-.", "c");
CODES.put("-..", "d");
CODES.put(".", "e");
CODES.put("..-.", "f");
CODES.put("--.", "g");
CODES.put("....", "h");
CODES.put("..", "i");
CODES.put(".---", "j");
CODES.put("-.-", "k");
CODES.put(".-..", "l");
CODES.put("--", "m");
CODES.put("-.", "n");
CODES.put("---", "o");
CODES.put(".--.", "p");
CODES.put("--.-", "q");
CODES.put(".-.", "r");
CODES.put("...", "s");
CODES.put("-", "t");
CODES.put("---", "o");
CODES.put(".--.", "p");
CODES.put("--.-", "q");
CODES.put(".-.", "r");
CODES.put("...", "s");
CODES.put("-", "t");
CODES.put("..-", "u");
CODES.put("...-", "v");
CODES.put(".--", "w");
CODES.put("-..-", "x");
CODES.put("-.--", "y");
CODES.put("--..", "z");
CODES.put(".----", "1");
CODES.put("..---", "2");
CODES.put("...--", "3");
CODES.put("....-", "4");
CODES.put(".....", "5");
CODES.put("-....", "6");
CODES.put("--...", "7");
CODES.put("---..", "8");
CODES.put("----.", "9");
CODES.put("-----", "0");
}
public static void main(String[] args) {
System.out.println(decode(".... . .-.. .-.. --- / - .- -.- .. -- .-"));
System.out.println(decode("...- .. ...- . / .-.. . / -.-. --- -. ..-. .. -. . -- . -. -"));
}
public static String decode(String morseCode) {
return Arrays.stream(morseCode.trim().split(WORD_SEPARATOR))
.map(MorseDecoder::decodeWord)
.collect(Collectors.joining(" "));
}
private static String decodeWord(String morseWord) {
return Arrays.stream(morseWord.trim().split(LETTER_SEPARATOR))
.map(MorseDecoder::decodeChar)
.collect(Collectors.joining());
}
public static String decodeChar(String code) {
return CODES.get(code);
}
}
A bientôt pour un nouveau #KataOfTheWeek !