oso96_2000
Código PHP:
Ver originalfunction reduce ($text = null) {
// Revisamos que exista un texto y que sean caracteres permitidos
trigger_error('Debes especificar una cadena consistente en caracteres de la "a" a la "z". Cadena enviada: ' . $text, E_USER_ERROR); }
// Creamos un arreglo a partir del texto
// Declaramos variables
$total = count($characters); $result = '';
$now = '';
$prev = false;
$next = false;
//Comenzamos el loop
for ($i = 0; $i < $total; $i++) {
// Obtenemos el caracter siguiente
$next = isset($characters[$i + 1]) ?
$characters[$i + 1] : false ;
//
if ($characters[$i] == $next || $characters[$i] == $prev) {
$now = $characters[$i];
}else{
$now = '-';
}
// Si estamos en medio de una secuencia y hay que romperla
if ($now == '-' && (ord($characters[$i]) + 1 != ord($next) || ord($characters[$i]) - 1 != ord($prev))) { $now = $characters[$i];
}
// Secuencia de reversa
if (ord($characters[$i]) + 1 == ord($prev) && ord($characters[$i]) - 1 == ord($next)) { $now = '-';
}
// Si es el primero o ultimo
if ($i == 0 || $i == ($total - 1)) {
$now = $characters[$i];
}
// Asignamos el caracter actual
$result .= $now;
// Guardamos para saber cual era el caracter anterior
$prev = $characters[$i];
}
// Quitamos guiones innecesarios
$result = trim($result, '- ');
return $result;
}
Y de ultimo momento nos llegó este otro código para la competición. Sin duda un código claro y controlado, que sin embargo no consigue superar a la mayoría de otros códigos cual fideos parecieran.
Me gusto el uso de un solo bucle e
if-then-else especifico y breve.