Gestión de cadenas en Java

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.