santris
Código PHP:
Ver originalfunction reduce($texto){
$resultado = $nuevo_resultado = $sub_trozo = $trozo2 = $sub_trozo2 = '';
//creamos la cadena contra la que realizaremos las comparaciones
$cadena_comp="abcdefghijklmnopqrstuvwxyz";
//asignamos la longitudud de la cadena $texto a la variable $longitud_cadena
$longitud_cadena=strlen($texto); $nuevo_texto=$texto.substr($texto,-1);//arreglo //creamos un bucle en el cual el número de iteraciones es igual al valor de $longitud_cadena
$i=0;
for ($i=0; $i<=$longitud_cadena; $i++){
$sub_trozo.=substr($nuevo_texto,$i,1); //comparamos al valor de la variable $sub_trozo con la cadena de comparación $cadena_comp, si es cierto asignamos el valor de $sub_trozo a la variable $trozo
$trozo=$sub_trozo;
//en caso contrario evaluamos las variables $trozo y sub_trozo
else{
$resultado.=$str_reducido;
}
else
$resultado.=$trozo;
$sub_trozo = '';//vaciamos
$trozo = '';//vaciamos
$i=$i-1;//descontamos un incremento por la letra que ocasionó la comparación negativa
}
else{
$str_reducido=substr($sub_trozo,0,1)."-".substr($sub_trozo,-1); $resultado.=$str_reducido;
}
else
$resultado.=$sub_trozo;
$sub_trozo = '';
$trozo = '';
$i=$i-1;
}
}
}
//invertimos la cadena de comparación y realizamos el mismo procedimiento anterior
$nueva_cadena_comp=strrev($cadena_comp); $longitud_cadena2=strlen($resultado); $nuevo_texto2=$resultado.substr($resultado,-1); $i=0;
for ($i=0; $i<=$longitud_cadena2; $i++){
$sub_trozo2.=substr($nuevo_texto2,$i,1); if(preg_match("/$sub_trozo2/",$nueva_cadena_comp)) $trozo2=$sub_trozo2;
else{
$nuevo_resultado.=$str_reducido2;
}
else
$nuevo_resultado.=$trozo2;
if($trozo2!="-")
$i=$i-1;
$sub_trozo2 ='';
$trozo2 = '';
}
else{
$str_reducido2=substr($sub_trozo2,0,1)."-".substr($sub_trozo2,-1); $nuevo_resultado.=$str_reducido2;
}
else
$nuevo_resultado.=$sub_trozo2;
if($sub_trozo2!="-")
$i=$i-1;
$sub_trozo2 = '';
$trozo2 = '';
}
}
}
return $nuevo_resultado;
}
Siguiendo el sendero de los scripts largos les presento este código. Aquí, lo curioso es el uso de cadenas auxiliares para comprobar la pertenencia del conjunto
a-z
También debo mencionar un detalle que me encontré en la etapa de evaluación: el uso de
unset(), en algunas secuencias de código hacía uso de
unset($foo); en lugar de solo
$foo='';
El problema radicaba en que a la siguiente vuelta del bucle, si antes fue
unseteada alguna variable esta ya no existe -
realmente- en el contexto, además del proceso de concatenación por variables indefinidas, etc...
Es un buen trabajo no lo dudo, y da los resultados esperados. Un ejemplo interesante es la reversa que aplica en el código, para el análisis contrario de secuencias
z-a. La implementación dejó varia cháchara de que hablar, muchas gracias...