Foros del Web » Programando para Internet » PHP »

Desarrollar una funcion que pruebe si una cadena es palindromo

Estas en el tema de Desarrollar una funcion que pruebe si una cadena es palindromo en el foro de PHP en Foros del Web. Hola como estan? amigos tengo un rollo o no se si es que estoy falto de logica pero no encuentro la manera de entender como ...
  #1 (permalink)  
Antiguo 28/08/2008, 15:22
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Desarrollar una funcion que pruebe si una cadena es palindromo

Hola como estan? amigos tengo un rollo o no se si es que estoy falto de logica pero no encuentro la manera de entender como desarrollar una funcion que me pruebe si una cadena es palindromo o no.

Para los que no lo saben (yo me entere hoy) palindrome es una palabra o frase que se puede leer igualmente en ambos sentidos ejemplo seria "Ana", "Somos", "Somos o no somos", etc.

De verdad que ando bloqueado con esto y necesito ayuda.

Gracias
  #2 (permalink)  
Antiguo 28/08/2008, 15:38
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

en php una cadena de caracteres se toma como un arreglo, primero quita todos los espacios en blanco y luego compara la cadena original con otra que tenga la cadena invertida, si son iguales, entonces es un palindromo, ahhh transforma tambn a minuscula toda la cadena, para no distinguir entre mayusculas y minusculas!

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 28/08/2008, 15:42
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Hola!

Bueno, una vez me toco hacer ese ejercicio, no recuerdo la solucion en codigo, pero te puedo ayudar a la logica:

Haz una funcion que:

- Primero elimina los espacios de tu cadena
- Despues haz un ciclo que se repita la mitad del tamaño de tu cadena, (si es non, redondea la mitad al numero menor, ej somos es 5 la mitad es 2.5, redondealo a 2 por que la m esta en medio)
- Cada pasada del ciclo:
- comparas el numero de pasada del ciclo (ej pasada 0 ) contra la ultima letra menos pasada (ej somos es 5, a 5 le restas cero y comparas la letra 0 contra 5 ),
- Si las letras son diferentes, haz que se regrese un valor falso, no es palindromo

- al final del ciclo regresa un valor verdadero. Se regresara solo si las comparaciones de letras son palindromos,

Con eso deberias de tener. A nivel codigo, pues eso te toca a ti! solo traduce mi lenguaje a php :D

Saludos!
  #4 (permalink)  
Antiguo 28/08/2008, 15:51
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Hice esto para ti. Funciona perfectamente.
Solo crea una funcion con el codigo y ahi tienes.

Código PHP:
<?php

$cadena 
"Somos o no somos";

$separar explode(" "strtolower($cadena));

foreach(
$separar as $palabra)
{
    
trim($palabra);
    
$nuevo .= $palabra
}

if(
$nuevo == strrev($nuevo))
{
    echo 
"Si";
}
else {
    echo 
"No";
}

?>
EDITO:

He aqui en una funcion:

Código PHP:
function palindromo($cadena)
{
    
$separar explode(" "strtolower($cadena));
    
    foreach(
$separar as $palabra)
    {
        
trim($palabra);
        
$nuevo .= $palabra
    }
    
    if(
$nuevo == strrev($nuevo))
    {
        return 
TRUE;
    }
    else {
        return 
FALSE;
    }


Última edición por Ronruby; 28/08/2008 a las 15:57
  #5 (permalink)  
Antiguo 28/08/2008, 15:51
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

gracias por responder. Claro, esa parte la entiendo, mi problema va en que no se como desarrollar el codigo, estoy estudiando poco a poco php para aprender y me encontre con esta piedrita en el zapato.

Primero pense en hacerlo de esta manera

<?php
function palindromo($a='somos') {
if ( (strlen($a) == 1) || ( strlen($a) == 0) ) {
return true;

?>

pero hasta aqui llego, con el strlen por lo menos logro medir la longitud de la cadena pero no caigo en que mas hacer.
  #6 (permalink)  
Antiguo 28/08/2008, 15:52
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Cita:
Iniciado por zubintro Ver Mensaje
Hola como estan? amigos tengo un rollo o no se si es que estoy falto de logica pero no encuentro la manera de entender como desarrollar una funcion que me pruebe si una cadena es palindromo o no.

Para los que no lo saben (yo me entere hoy) palindrome es una palabra o frase que se puede leer igualmente en ambos sentidos ejemplo seria "Ana", "Somos", "Somos o no somos", etc.

De verdad que ando bloqueado con esto y necesito ayuda.

Gracias
Tio este codigo es perfecto pa ti, recien salidito del disco duro de MasterOjitos (mi cerebelo ps....jeje):

Código PHP:
<?php
function palindromo($p='somos'){
$palabra=trim($p);

for(
$i=strlen($palabra)-1;$i>=0;$i--){
    
$nueva_palabra.=substr($palabra,$i,1);
}

$cad="La palabra ".$palabra;
if(
strtolower($palabra)==strtolower($nueva_palabra)){
    
$cad.=" si es palindrome";
        
$estado=true;
}else{
    
$cad.=" no es palindrome";
        
$estado=false;
}
//bien retornas el resultado
return $cad;
//o bien retornas true o false
return $estado;
}

//y la llamas asi
$p="palabra";
$resultado=palindromo($p);
//y ya tu ve que haces con resultado
?>
Aplausos....Por favor.....

Atte.

MasterOjitos

Última edición por masterojitos; 28/08/2008 a las 16:08 Razón: Ahora es con funcion...jeje
  #7 (permalink)  
Antiguo 28/08/2008, 15:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Gracias por la ayuda a todos.... masterojitos (van tus aplausos para que no digas que no jejejejej), Ronruby (aplausos para ti tambien asi no hay pelea jejeje)... los codigos estan perfectos, de esa manera funcionan a la perfeccion, pero el llevarlos a una funcion es donde estoy seco y pegado
  #8 (permalink)  
Antiguo 28/08/2008, 15:59
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Ya edite mi mensaje y lo puse en una funcion. Dale una miradita.

El metodo de uso seria mas o menos algo como:
Código PHP:
<?php
if(palindromo("SoMoS o NO somoS")==TRUE)
{
echo 
"Si es palindrome";
}
else {
echo 
"No, no es palindrome";
}
?>
  #9 (permalink)  
Antiguo 28/08/2008, 16:09
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Vale... esta arriba, o toma de nuevo:

Código PHP:
<?php
function palindromo($p=''){
    
$palabra=trim($p);
    if(
$palabra==''){
        return 
false;
    }else{
        for(
$i=strlen($palabra)-1;$i>=0;$i--){
            
$nueva_palabra.=substr($palabra,$i,1);
        }
        
        
$cad="La palabra [".$palabra;
        if(
strtolower($palabra)==strtolower($nueva_palabra)){
            
$cad.="] si es palindrome";
                
$estado=true;
        }else{
            
$cad.="] no es palindrome";
                
$estado=false;
        }
        
//bien retornas el resultado
        
return $cad;
        
//o bien retornas true o false
        //return $estado;
    
}
}

//y la llamas asi
$p="somos";
$resultado=palindromo($p);
//y ya tu ve que haces con resultado
echo $resultado;
?>
Que mas pedir....

Atte.

MasterOjitos

Última edición por masterojitos; 28/08/2008 a las 16:14
  #10 (permalink)  
Antiguo 28/08/2008, 16:11
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Gracias ronruby, acabo de probar la funcion y se aplica a la perfeccion, ahora me toca analizar por mi parte algunos elementos que usaste en la funcion
  #11 (permalink)  
Antiguo 28/08/2008, 16:12
 
Fecha de Ingreso: septiembre-2007
Mensajes: 120
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Desarrollar una funcion que pruebe si una cadena es palindromo

Gracias por la ayuda master
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 01:41.