gary_qwerty
Código PHP:
Ver originalfunction reduce($string){
return $string;
}
$abc = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z");
$c = 0;
while( $c < strlen($string) ){ $str_arr[] = substr($string, $c, 1); $c++;
}
$str_replace = $str_arr;
foreach($str_arr as $k=>$letter){
if( isset( $str_arr[$k+1] ) ){ if( isset($abc[$val+1]) && $str_arr[$k+1] == $abc[$val+1] ){ if( isset($str_arr[$k+2]) && isset($abc[$val+2]) && $str_arr[$k+2] == $abc[$val+2] ){ unset($str_replace[$k+1]); }
}
else if( isset($abc[$val-1]) && $str_arr[$k+1] == $abc[$val-1] ){ if( isset($str_arr[$k+2]) && isset($abc[$val-2]) && $str_arr[$k+2] == $abc[$val-2] ){ unset($str_replace[$k+1]); }
}
}
}
foreach($str_replace as $k=>$l){
$keys[] = $k;
$letters[] = $l;
}
$ret = "";
foreach($keys as $k=>$l){
if( isset($keys[$k+1]) ){ if( $l+1 == $keys[$k+1] ){
$ret .= $letters[$k];
}
else{
$ret .= $letters[$k]."-";
}
}
else{
$ret .= $letters[$k]."-";
}
}
return $ret;
}
Un script de mas de 1000B, y que siendo aún mas corto que otros no es mas veloz.
Haciendo una bella combinación de cadenas, arreglos y bucles consigue pasar las pruebas y aquí lo tenemos. Según se cuenta, una simple corrección y ya tenemos listo todo el algoritmo.
Sin duda códigos como esto demuestra la flexibilidad no del lenguaje, sino de la mente humana. ;)