Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Last active July 15, 2020 23:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/200445cd21abf564e94b9b45cd8ba323 to your computer and use it in GitHub Desktop.
Save parzibyte/200445cd21abf564e94b9b45cd8ba323 to your computer and use it in GitHub Desktop.
/*
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me /
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Creado por Parzibyte (https://parzibyte.me). Este encabezado debe mantenerse intacto,
excepto si este es un proyecto de un estudiante.
* */
package me.parzibyte;
import java.util.Hashtable;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static Hashtable<String, String> obtenerEquivalencias() {
Hashtable<String, String> equivalencias = new Hashtable<>();
equivalencias.put("A", ".-");
equivalencias.put("B", "-...");
equivalencias.put("C", "-.-.");
equivalencias.put("CH", "----");
equivalencias.put("D", "-..");
equivalencias.put("E", ".");
equivalencias.put("F", "..-.");
equivalencias.put("G", "--.");
equivalencias.put("H", "....");
equivalencias.put("I", "..");
equivalencias.put("J", ".---");
equivalencias.put("K", "-.-");
equivalencias.put("L", ".-..");
equivalencias.put("M", "--");
equivalencias.put("N", "-.");
equivalencias.put("Ñ", "--.--");
equivalencias.put("O", "---");
equivalencias.put("P", ".--.");
equivalencias.put("Q", "--.-");
equivalencias.put("R", ".-.");
equivalencias.put("S", "...");
equivalencias.put("T", "-");
equivalencias.put("U", "..-");
equivalencias.put("V", "...-");
equivalencias.put("W", ".--");
equivalencias.put("X", "-..-");
equivalencias.put("Y", "-.--");
equivalencias.put("Z", "--..");
equivalencias.put("0", "-----");
equivalencias.put("1", ".----");
equivalencias.put("2", "..---");
equivalencias.put("3", "...--");
equivalencias.put("4", "....-");
equivalencias.put("5", ".....");
equivalencias.put("6", "-....");
equivalencias.put("7", "--...");
equivalencias.put("8", "---..");
equivalencias.put("9", "----.");
equivalencias.put(".", ".-.-.-");
equivalencias.put(",", "--..--");
equivalencias.put(":", "---...");
equivalencias.put("?", "..--..");
equivalencias.put("'", ".----.");
equivalencias.put("-", "-....-");
equivalencias.put("/", "-..-.");
equivalencias.put("\"", ".-..-.");
equivalencias.put("@", ".--.-.");
equivalencias.put("=", "-...-");
equivalencias.put("!", "−.−.−−");
return equivalencias;
}
public static String asciiAMorse(String ascii) {
Hashtable<String, String> equivalencias = obtenerEquivalencias();
return equivalencias.getOrDefault(ascii, "");
}
public static String morseAAscii(String morseBuscado) {
Hashtable<String, String> equivalencias = obtenerEquivalencias();
Set<String> claves = equivalencias.keySet();
// La clave es la letra ASCII
for (String clave : claves) {
String morse = equivalencias.get(clave);
if (morse.equals(morseBuscado)) {
return clave;
}
}
return "";
}
public static String codificarMorse(String original) {
StringBuilder codificado = new StringBuilder();
for (int i = 0; i < original.length(); i++) {
String charComoCadenaYEnMayusculas = String.valueOf(original.charAt(i)).toUpperCase();
String equivalencia = asciiAMorse(charComoCadenaYEnMayusculas);
codificado
.append(equivalencia)
.append(" ");
}
return codificado.toString();
}
public static String decodificarMorse(String codificado) {
StringBuilder decodificado = new StringBuilder();
// Necesitamos separarlo por espacios
String[] morse = codificado.split(" ");
for (String morseActual : morse) {
String equivalencia = morseAAscii(morseActual);
decodificado.append(equivalencia);
}
return decodificado.toString();
}
public static void main(String[] args) {
String original = "parzibyte.me";
System.out.println(codificarMorse(original));
String codificado = ".--. .- .-. --.. .. -... -.-- - . .-.-.- -- .";
System.out.println(decodificarMorse(codificado));
Scanner sc = new Scanner(System.in);
System.out.println("Ingresa un texto y lo convertiré a Morse: ");
String textoDeUsuario = sc.nextLine();
codificado = codificarMorse(textoDeUsuario);
System.out.println("El texto convertido es: ");
System.out.println(codificado);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment