Foros del Web » Programación para mayores de 30 ;) » Java »

Rompecabezas

Estas en el tema de Rompecabezas en el foro de Java en Foros del Web. Esta tarde he tenido que aprender JAVA a toda pastilla para tratar de resolver este rompecabezas.. pero creo que no lo voy a poder conseguir ...
  #1 (permalink)  
Antiguo 11/03/2007, 15:29
 
Fecha de Ingreso: marzo-2007
Mensajes: 2
Antigüedad: 17 años, 8 meses
Puntos: 0
Rompecabezas

Esta tarde he tenido que aprender JAVA a toda pastilla para tratar de resolver este rompecabezas.. pero creo que no lo voy a poder conseguir solo
Mi duda es la siguiente.
¿Qué "string" tengo que meter a la variable s1 para que al final del proceso me de TRUE?

Tal y como yo lo veo al final compara una string de 4 caracteres con otra de 5 por lo que la comparación nunca será verdadera. ¿O sí?. ¿Donde cometo el error?. Ya sé que modificando el 10 de "s1.substring(5, 10)" por un 9 lo consigo, pero se trata hacerlo metiendo la string s1 correcta.

A ver esas mentes privilegiadas si me echan una mano.


/**
* The HelloWorldApp clase implementa una aplicación que
* simplemente muestra "Hello World!" en la salida estándar.
*/

class HelloWorldApp {
public static void main(String[] args) {

String s1 = new String( "0000X4178=aBcd" );

System.out.println(s1);

if((s1 = s1.toLowerCase()).length() != 15)
System.out.println(s1);
if((s1 = s1.toLowerCase()).charAt(3) != s1.charAt(7) || s1.charAt(9) != s1.charAt(4))
System.out.println(s1.charAt(3));
if(s1.charAt(9) < s1.charAt(6))
System.out.println(s1);

int k = 0;
for(int l = 0; l < 6; l++)
k += (s1.charAt(l) - 48) + 1;
System.out.println(k);

if(k < 1000)
k += 4096;
String s2 = Integer.toString(k);
System.out.println(k);

StringBuffer stringbuffer = new StringBuffer();
for(int i1 = 0; i1 < 4; i1++)
{
int j1;
char c = (char)((j1 = ((j1 = s2.charAt(i1) - 97) + s1.charAt(10) * 1 + s1.charAt(11) * 2 + s1.charAt(12) * 4) % 64) + 48);
stringbuffer.append(c);
System.out.println (c);
}


System.out.println (stringbuffer.toString()) ;
System.out.println (s1.substring(5, 10));

System.out.println (stringbuffer.toString().equals(s1.substring(5, 10)));

}
}
  #2 (permalink)  
Antiguo 12/03/2007, 05:34
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 9 meses
Puntos: 10
Re: Rompecabezas

Cita:
Iniciado por Carter Ver Mensaje
Esta tarde he tenido que aprender JAVA a toda pastilla para tratar de resolver este rompecabezas.. pero creo que no lo voy a poder conseguir solo
Mi duda es la siguiente.
¿Qué "string" tengo que meter a la variable s1 para que al final del proceso me de TRUE?

Tal y como yo lo veo al final compara una string de 4 caracteres con otra de 5 por lo que la comparación nunca será verdadera. ¿O sí?. ¿Donde cometo el error?. Ya sé que modificando el 10 de "s1.substring(5, 10)" por un 9 lo consigo, pero se trata hacerlo metiendo la string s1 correcta.

A ver esas mentes privilegiadas si me echan una mano.


/**
* The HelloWorldApp clase implementa una aplicación que
* simplemente muestra "Hello World!" en la salida estándar.
*/

class HelloWorldApp {
public static void main(String[] args) {

String s1 = new String( "0000X4178=aBcd" );

System.out.println(s1);

if((s1 = s1.toLowerCase()).length() != 15)
System.out.println(s1);
if((s1 = s1.toLowerCase()).charAt(3) != s1.charAt(7) || s1.charAt(9) != s1.charAt(4))
System.out.println(s1.charAt(3));
if(s1.charAt(9) < s1.charAt(6))
System.out.println(s1);

int k = 0;
for(int l = 0; l < 6; l++)
k += (s1.charAt(l) - 48) + 1;
System.out.println(k);

if(k < 1000)
k += 4096;
String s2 = Integer.toString(k);
System.out.println(k);

StringBuffer stringbuffer = new StringBuffer();
for(int i1 = 0; i1 < 4; i1++)
{
int j1;
char c = (char)((j1 = ((j1 = s2.charAt(i1) - 97) + s1.charAt(10) * 1 + s1.charAt(11) * 2 + s1.charAt(12) * 4) % 64) + 48);
stringbuffer.append(c);
System.out.println (c);
}


System.out.println (stringbuffer.toString()) ;
System.out.println (s1.substring(5, 10));

System.out.println (stringbuffer.toString().equals(s1.substring(5, 10)));

}
}
for(int i1 = 0; i1 < 4; i1++)


Este for se ejecuta 5 veces. Por lo que es stringbuffer tendra tambien longitud 5

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:56.