Foros del Web » Programando para Internet » PHP »

string creciente con todas las letras

Estas en el tema de string creciente con todas las letras en el foro de PHP en Foros del Web. hola, estoy tratando de hacer un código donde me cheque todas las letras, y todas las combinaciones posibles, por ejemplo, empieza a, b, c, d, ...
  #1 (permalink)  
Antiguo 27/10/2012, 14:37
MCF
 
Fecha de Ingreso: marzo-2008
Mensajes: 126
Antigüedad: 16 años, 9 meses
Puntos: 4
string creciente con todas las letras

hola, estoy tratando de hacer un código donde me cheque todas las letras, y todas las combinaciones posibles, por ejemplo, empieza a, b, c, d, e, f, g, h, i ...y así sigue hasta la z, cuando llega a z empezará ahora aa, ab, ac, ad, ae, af, ag ... y así hasta la zz y empezará de nuevo aaa, aab, aac, aad y así, alguien tiene alguna idea de cómo hacerlo ??

pd es en php.
  #2 (permalink)  
Antiguo 27/10/2012, 17:50
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 17 años, 2 meses
Puntos: 80
Respuesta: string creciente con todas las letras

Bueno mira yo tenia algo que era muy parecido a lo que tu querías, que era para calcular el nombre de una Columna Excel.
Le realice algun cambio y te lo pongo a continuación.
Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL | E_STRICT);
  3.  
  4. class ColumnasExcel
  5. {
  6.     /**
  7.      * Contiene Los caracteres con los que se formaran la cadena final.
  8.      * @var string
  9.      */
  10.     private $_cadenaSalida  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  11.    
  12.     /**
  13.      * Contiene el Tamaño de la cadena de caracteres de salida.
  14.      * @var integer
  15.      */
  16.     private $_largo;
  17.    
  18.     /**
  19.      * Constructor de Clase
  20.      * @param   string  $cadenaSalida   Si se quiere una cadena distinta a las letras de Excel
  21.      *                                  Se puede Configurar aqui o con el metodo setCadenaSalida.
  22.      */
  23.     public function __construct($cadenaSalida = '')
  24.     {
  25.         if (!empty($cadenaSalida)) {
  26.             $this->_cadenaSalida = $cadenaSalida;
  27.         }
  28.         $this->_largo = strlen($this->_cadenaSalida);
  29.     }
  30.    
  31.     /**
  32.      * Configura una Nueva cadena de Salida.
  33.      * @param   string  $cadenaSalida   Configura una nueva cadena de salida.
  34.      */
  35.     public function setCadenaSalida($cadenaSalida)
  36.     {
  37.         $this->_cadenaSalida    = $cadenaSalida;
  38.         $this->_largo           = strlen($this->_cadenaSalida);
  39.     }
  40.    
  41.     /**
  42.      * Convierte un Entero a Una Cadena de Letras.
  43.      * @param   integer $numero Numero a Convertir
  44.      * @return  string
  45.      */
  46.     function getNumeroALetra($numero)
  47.     {
  48.        
  49.         $cadena = '';
  50.         do {
  51.            $entero  = (int)( $numero / $this->_largo );
  52.            $resto   = ( $numero % $this->_largo );
  53.            //$cadena  = chr(65 + $resto) . $cadena;
  54.            $cadena = substr($this->_cadenaSalida, $resto,1) . $cadena;
  55.            
  56.            $numero  = $entero - 1 ;
  57.         } while ($entero);
  58.        
  59.         return $cadena;
  60.     }
  61.    
  62.     /**
  63.      * Cantidad Maxima de letras en el resultado Final
  64.      * @param   integer $max    Maxima cantidad de caracteres del resultado
  65.      * @return  integer
  66.      */
  67.     public function tamanioMaximoCadena($max)
  68.     {
  69.         $max        = intval($max);
  70.         $resultado  = 0;
  71.        
  72.         for ($i=1; $i <= $max; $i++) {
  73.             $resultado+= bcpow($this->_largo, $i);
  74.         }
  75.        
  76.         return ($resultado - 1);
  77.     }
  78. }
Ahora como se usa, antes decirte que las interaciones podrían ser muchísimas y se te colgara el apache quizás.
El set_time_limit(0); al inicio es para que nos deje que nuestro script tenga vida ilimitada, esto en un server no creo que funcione por seguridad, de ultimo cuando se le termine el tiempo te largara un error fatal de que se le termino el tiempo asignado.
Código PHP:
Ver original
  1. // Creo una instancia del objeto
  2. $obj            = new ColumnasExcel();
  3. // Veo cuantos caracteres como maximo tenga la cadena de salida
  4. $iteraciones    = $obj->tamanioMaximoCadena(4);
  5. echo 'Se realizaran ' . $iteraciones . ' iteraciones.<br>';
  6. for ($i=0; $i <= $iteraciones; $i++)
  7. {
  8.     echo $i . ' = ' . $obj->getNumeroALetra($i) . '<br>';
  9.    
  10. }
Si quisiera otra cadena de Caracteres, podemos definirla en la creacion del objeto.
Código PHP:
Ver original
  1. $obj            = new ColumnasExcel('ABCD');
  2. // o luego de instanciado
  3. $obj            = setCadenaSalida('0123');

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 31/10/2012, 09:05
MCF
 
Fecha de Ingreso: marzo-2008
Mensajes: 126
Antigüedad: 16 años, 9 meses
Puntos: 4
Respuesta: string creciente con todas las letras

Hola, disculpa por tardar tanto en contestar, pero muy bueno el programa muy bien explicado y funciona al 100%, me dio una gran idea para hacer el mio para q no creas q solo lo copiare ;) jaja

Etiquetas: abecedario, creciente, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.