Es importante conocer el manejo de caracteres en un lenguaje como Java
Manejo de cadenas en Java
Construyendo una máquina de comunicación con extraterrestres
Buscando una solución
En la búsqueda de vida extraterrestre pueden aparecer muchos dilemas y preguntas, entre las preguntas más comunes están: ¿Los extraterrestres serán parecidos a nosotros los terrestres?, ¿Cómo se comunicarán los extraterrestres? Una interesante investigación es suponer varios escenarios e intentar soluciones posibles, con respecto a la forma de comunicación podemos suponer que es parecida al lenguaje español con la diferencia que los extraterrestres tienen las letras mezcladas.
String alfabetoTerrestre = "abcdefghijklmnopqrstuvwxyz";
String alfabetoExtraterrestre1 = "ucadejfgbhikmoqzrnstvxlwyp";
Puede ser que encontremos más de una civilización extraterrestre y que la comunicación es semejante al lenguaje español pero con símbolos diferentes para cada letra.
String alfabetoExtraterrestre2 = "!#$%&/()=?¡'¿+{[}]_-^~*>|<";
Dar una solución al problema
La pregunta es, ¿Existe algún algoritmo que pueda convertir listas de palabras entre una civilización y otra?
Por ejemplo:
public String[] convertirLista(String listaPalabras[], String alfabetoCivilizacion1, String alfabetoCivilizacion2 ) {
String[] listaSolucion = null;
//Algoritmo solución del problema ...
//...
//Fin algoritmo
return solucion;
}
Solución al problema
La solución al problema planteado de la comunicación entre habitantes del universo es la siguiente clase llamada Civilizacion{...}
public class Civilizacion {
public Civilizacion() {
super();
}
public String[] convertirLista(String listaPalabras[], String alfabetoCivilizacion1, String alfabetoCivilizacion2 ) {
String[] listaSolucion = null;
//Algoritmo solución del problema ...
listaSolucion = new String[listaPalabras.length];
StringBuilder palabraAConvertir = null;
String palabraConvertida = ""; char caracter; int lugarCaracter;
for(int conPalabras=0; conPalabras<listaPalabras.length; conPalabras++){
palabraAConvertir = new StringBuilder(listaPalabras[conPalabras]);
for(int conCaracter=0; conCaracter<palabraAConvertir.length(); conCaracter++){
caracter=palabraAConvertir.charAt(conCaracter);
lugarCaracter = alfabetoCivilizacion1.indexOf("" + caracter);
palabraConvertida = palabraConvertida + alfabetoCivilizacion2.charAt(lugarCaracter);
}
listaSolucion[conPalabras] = palabraConvertida;
palabraConvertida = "";
}
return listaSolucion;
}//fin solución
public static void main(String[] args) {
Civilizacion civilizacion = new Civilizacion();
String lista[] = { "hola", "esto", "es", "un", "saludo", "terrestre" };
String alfabetoTerrestre = "abcdefghijklmnopqrstuvwxyz";
String alfabetoExtraterrestre = "!#$%&/()=?¡'¿+{[}]_-^~*>|<";
String[] solucion = new String[lista.length];
solucion = civilizacion.convertirLista(lista, alfabetoTerrestre, alfabetoExtraterrestre);
for(int con=0; con<lista.length; con++){
System.out.print(lista[con] + " ");
}
System.out.println();
for(int con=0; con<solucion.length; con++){
System.out.print(solucion[con] + " ");
}
}//fin main()
}//fin clase
Ejecutar la solución del problema
La salida por pantalla sería la siguiente después de compilar y ejecutar la clase Civilizacion{...}
hola esto es un saludo terrestre
){'! &_-{ &_ ^+ _!'^%{ -&]]&_-]&
Process exited with exit code 0.
FIN del artículo.
No hay comentarios.:
Publicar un comentario
Realiza un comentario, debes autenticar una cuenta Gmail, Yahoo, OpenID, etc.