Ver Mensaje Individual
  #23 (permalink)  
Antiguo 08/07/2010, 15:13
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Desafío PHP] Función reduce()

Aporte: un pequeño script para generar cadenas aleatoriamente (20 cada vez, cambiar la línea 6) de largo 50 como máximo (cambiar línea 8). Es difícil que genere rangos largos, pero puede servir para probar casos de borde

Código PHP:
Ver original
  1. $a = ord('a');
  2. $z = ord('z');
  3.  
  4. echo "<pre>\n";
  5. $i = 0;
  6. while ($i < 20) {
  7.     $prueba = "";
  8.     $letras = rand(0, 50);
  9.     $j = 0;
  10.     while ($j < $letras) {
  11.         $direccion_rango = rand(-1, 1);
  12.         $ultimo = strlen($prueba) - 1;
  13.         // si la "dirección" es 0, $prueba es de largo 0, o se me pide continuar un rango que sigue a una z
  14.         // => agregar un caracter al azar
  15.         if ( ($direccion_rango == 0) || ($ultimo < 0) ||
  16.              ( ($prueba{$ultimo} == 'z') AND ($direccion_rango == 1) ) ||
  17.              ( ($prueba{$ultimo} == 'a') AND ($direccion_rango == -1) ) ) {
  18.             $prueba .= chr(rand($a, $z));
  19.         } else {
  20.             // continuar el rango.
  21.             $prueba .= chr(ord($prueba{$ultimo}) + $direccion_rango);
  22.         }
  23.         $j++;
  24.     }
  25.  
  26.     $res = reduce($prueba);
  27.     printf("%50s \t %50s \t %10s \n", $prueba, $res, ($prueba == $res));
  28.     $i++;
  29. }
  30. echo "</pre>\n";

Última edición por AlvaroG; 09/07/2010 a las 11:17