fran86
Código PHP:
Ver originalfunction reduce($cadena)
{
// Solo aplica a cadenas de 3 o mas caracteres
// Agrega el extremo izquierdo
$cadenaReducida = $cadena[0];
// Recorre la cadena omitiendo el primer y ultimo caracter
for ($i=1; $i<strlen($cadena)-1; $i++) { $iInicial = $i;
// Avanza la posicion del caracter si es el medio de un rango
while ( ($i+1 < strlen($cadena)) && ($cadena[$i-1] != $cadena[$i+1])
&& ((ord($cadena[$i-1])+ord($cadena[$i+1]))/2 == ord($cadena[$i])) ) {
$i++;
}
// Agrega en $cadenaReducida de acuerdo a si se omitieron o no caracteres
if ($iInicial != $i) {
$cadenaReducida .= "-";
$i--;
} else {
$cadenaReducida .= $cadena[$i];
}
}
// Agrega el extremo derecho
$cadenaReducida .= $cadena[strlen($cadena)-1]; return $cadenaReducida;
} else {
return $cadena;
}
}
Un código honesto y magnifico, resulta muy halagador a la lectura la participación de este usuario.
Aunque claro, no supera con creces el tiempo de ejecución de sus oponentes si cumple su cometido, y lo realiza de manera ejemplar. Ya aquí se pone en practica el descarte del primer y último carácter, luego un bucle como
scanner... presto!!