jump to navigation

La conjetura capicua con Java Junio 23, 2009

Publicado por lineadecodigo en : Java , Hasta ahora 1 comentario

Un número capicua es aquel que se lee igual de derecha a izquierda que de izquierda a derecha (véase Saber si un número es capicua con Java).

La conjetura capicua dice que partiendo de un número natural podemos llegar a obtener un número capicua en un número finito de sumas. Para ello iremos sumando a dicho número su número inverso.

Así tendríamos la siguiente secuencia:

96
96 + 69 = 165
165 + 561 = 726
726 + 627 = 1353
1353 + 3531 = 4884

Lo que vamos a explicar aquí es como hacer la conjetura capicua con Java...

Para empezar podemos leernos el artículo Saber si un número es capicua con Java. Ya que en él se nos explicará el cómo saber si un número es capicua de forma detallada mediante Java.

Lo primero que codificaremos serán un método que nos ayude a invertir un número:

  1. static public long invertirNumero(long numero){...}

Esto ya lo veíamos en detalle dentro de Saber si un número es capicua con Java. Pero veamos el código:

  1. static public long invertirNumero(long numero){
  2.  
  3. long falta,numeroInvertido,resto;
  4.  
  5. falta=numero;
  6. numeroInvertido=0;
  7. resto=0;
  8.  
  9. while(falta!=0) {
  10. resto=falta%10;
  11. numeroInvertido=numeroInvertido*10+resto;
  12. falta=falta/10;
  13. }
  14.  
  15. return numeroInvertido;
  16. }

Podemos observar que mediante operaciones matemáticas y obteniendo el resto de dividirlo entre 10 tenemos el número invertido.

Ahora vamos a la parte central que nos permite aplicar la conjetura capicua con Java. Estaremos en un bucle que vaya comparando el número con su núnero invertido. En caso de que coincidan es que hemos dado con el número capicua.

  1. long numeroInvertido = invertirNumero(numero);
  2. while (numero != numeroInvertido) {...}}

En el caso de no haber dado con el capicua, sumamos el número a su número invertido y volvemos a calcular el número invertido del resultado. Tal y como dice la conjetura capicua.

  1. long numeroInvertido = invertirNumero(numero);
  2. while (numero != numeroInvertido) {
  3. numero+=numeroInvertido;
  4. numeroInvertido = invertirNumero(numero);
  5. }

Si salimos del bucle habremos dado con el número capicua...

Hay que tener en cuenta que el ejercicio trabaja con long. Es decir que si cuando hemos llegado a 9,223,372,036,854,775,807 no hemos encontrado el capicua... mal tema. Así que habrá que controlarlo o trabajar con tipos de datos de mayor precisión.

¿Alguien se anima a explicar cómo podemos hacerlo con mayor precisión?

|- Descargar el código
|- Reportar error en el código
|- Foro sobre Java Básico

Poner un icono dentro de Google Maps Junio 21, 2009

Publicado por lineadecodigo en : Google , Hasta ahora 1 comentario

Para poner un icono dentro de Google Maps lo que tenemos que hacer es poner una marca. La marca está representada mediante la clase GMarker.

Los primeros pasos son los de siempre y que podéis leer detenidamente en Cargando Google Maps. Si bien, resumidamente, consisten en:

  1. Cargar Google Maps
    1. <script src="http://maps.google.com/maps?file=api&v=2&key=miclave" type="text/javascript"></script>
  2. Definir un área para el mapa
    1.  
    2. <div id="mapa" style="width: 400px; height: 300px;"></div>
    3.  
    4. </script>
  3. Instanciar el mapa
    1. if (GBrowserIsCompatible()) {
    2. map = new GMap(document.getElementById("mapa"));
    3. map.setCenter(new GLatLng(40.655997,-4.700518), 15);
    4. }

Lo siguiente que pasaremos a realizar será la carga del icono dentro de Google Maps. Para ello creamos una instancia de la clase GMarker.

  1.  
  2. var marker = new GMarker(new GLatLng(40.655997,-4.700518));
  3.  

La clase GMarker recibe como parámetro un punto: ya sea relativo al mapa (GPoint) o una Latitud-Longitud (GlatLng). En nuestro caso nos hemos decantado por la segunda opción y hemos pasado como parámetro de la clase GMarker una clase GlatLng.

Una vez creada la marca tendremos que insertarla dentro del mapa. Para ello utilizamos el método .addOverlay() de la clase GMap2. Finalmente nos quedan dos líneas de código muy sencillas, las cuales nos permiten poner un icono dentro de Google Maps.

  1.  
  2. var marker = new GMarker(new GLatLng(40.655997,-4.700518));
  3. map.addOverlay(marker);
  4.  
|- Visualizar el ejemplo
|- Descargar el código
|- Reportar error en el código
|- Foro sobre Google Maps

Cambiando las URLs de Linea de Código Junio 15, 2009

Publicado por lineadecodigo en : Linea de Codigo , Añadir un comenario

Estamos re-estructurando Linea de Código de tal manera que sus URL sean más fáciles de recordar.

Es por ello que hemos organizado los artículos en categorias. Así ahora podréis encontrar URL como:

Si bien, las antiguas URL seguirán funcionado... :-)

Espero que sea de vuestro agrado