Foros del Web » Programando para Internet » Javascript »

Número capicula

Estas en el tema de Número capicula en el foro de Javascript en Foros del Web. Hola, tengo dos cajas de texto, en la primera se van escribiendo los números y en la segunda me tiene que salir si o no ...
  #1 (permalink)  
Antiguo 03/12/2008, 06:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 46
Antigüedad: 16 años, 4 meses
Puntos: 0
Exclamación Número capicula

Hola, tengo dos cajas de texto, en la primera se van escribiendo los números y en la segunda me tiene que salir si o no dependiendo si de lo que voy poniendo es capicua o no. La pregunta es, alguien sabe como tiene que ser el codigo??? estoy totalmente perdida, nose ni por donde empezar.Muchas gracias
  #2 (permalink)  
Antiguo 03/12/2008, 07:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 46
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Número capicula

Ya he consegido algo, pero no kiero usar ese codigo exacto, me gustaria plantearlo de otra manera, me podeis ayudar??


<html>
<head>



<script language="JavaScript">

function comprobar(){
izq=0;
der=document.form1.campo1.value.length-1;
cad=document.form1.campo1.value;
while (izq<der && cad[izq]==cad[der]){
izq++;
der--;
}
document.form1.campo2.value=(izq>=der);
}
</script></head><body>
<form name="form1">
Valor:
<input name="campo1" type="text" id="campo1" onkeyup="comprobar();">
<br>
Capicua:
<input name="campo2" type="text" id="campo2" readonly="yes">

</form>
</body>
</html>
  #3 (permalink)  
Antiguo 03/12/2008, 07:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 10
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Número capicula

Yo iria verificando si el primer nº es igual al último, el 2º al penultimo así hasta que quedara 1 o ninguno y si concuerdan pues es capicua.
  #4 (permalink)  
Antiguo 03/12/2008, 08:05
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Número capicula

Siguiendo la definición recursiva...

Código javascript:
Ver original
  1. function esCapicuaRecursivo(cadena) {
  2.     function arregloEsCapicua(arreglo) {
  3.         return arreglo.length < 2
  4.                    ? true
  5.                    : ((arreglo.pop() == arreglo.shift()) && arregloEsCapicua(arreglo));
  6.     }
  7.     return arregloEsCapicua(cadena.split(""));
  8. }

Siguiendo la definición más popular...

Código javascript:
Ver original
  1. function esCapicuaDefinicion(cadena) {
  2.     return (cadena == cadena.split("").reverse().join(""));
  3. }

Ejemplo:
Código javascript:
Ver original
  1. alert(esCapicuaDefinicion("123456545654321"));
  2. alert(esCapicuaDefinicion("123456788984323"));
  3.  
  4. alert(esCapicuaRecursivo("123456545654321"));
  5. alert(esCapicuaRecursivo("123456788984323"));


(Queda un poco feo, pero hay que pasar la cadena a array porque array tiene mejores métodos (como reverse o pop y shift))
  #5 (permalink)  
Antiguo 03/12/2008, 08:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 46
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Número capicula

No hay una forma un poco mas sencilla??? gracias
  #6 (permalink)  
Antiguo 03/12/2008, 08:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Número capicula

¿No te parece que la segunda función que he puesto sea sencilla? Que no te guste la primera opción... bueno, vale, puedo entenderlo, pero ¿más sencilla que la segunda? Si es una sola línea y se lee muy fácil: "Una cadena es capicúa si es igual a la misma cadena dada la vuelta".

No sé, pero no creo que haya una manera más sencilla que esto:
Código javascript:
Ver original
  1. function esCapicua(cadena) {
  2.     return (cadena == cadena.split("").reverse().join(""));
  3. }
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 15:35.