Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2016, 19:08
parzibyte
 
Fecha de Ingreso: marzo-2016
Ubicación: Chignautla, Puebla
Mensajes: 1
Antigüedad: 8 años, 1 mes
Puntos: 0
Optimización para anagrama. Memoria agotada

Hola amigos, qué tal. Soy algo nuevo en esto de los foros pero les escribiré mi problema:
Estaba aburrido y decidí escribir una función que escriba todas las combinaciones posibles para una palabra, es decir, un anagrama. Funciona bien, pero solamente con cadenas de una longitud menor o igual a 4. Ya que si supero eso, me dice que el límite de memoria ha sido alcanzado. ¿Hay alguna forma de optimizar eso? O tal vez hacerlo en segundo plano, o cualquier cosa.
Para aclarar unas cosas: uso la función str_shuffle de php. Además, calculo todas las combinaciones posibles para la cadena con su factorial. Para calcular dicho factorial también escribí una función, pero esa no la pongo porque me parece innecesario. ¡Muchas gracias!
Soy un poco nuevo en esto de la programación. Les dejo aquí mi código:
Código PHP:
Ver original
  1. function dame_anagrama( $cadena , $arreglo_anagramas){
  2.  
  3.     $longitud_cadena = strlen( $cadena );
  4.     $combinaciones = factorial( $longitud_cadena );
  5.     $longitud_cadena = null;
  6.     if(count($arreglo_anagramas) +1 <= $combinaciones){
  7.         $anagrama = str_shuffle( $cadena );
  8.         if (!(in_array($anagrama, $arreglo_anagramas))) {
  9.             array_push($arreglo_anagramas, $anagrama);
  10.         }
  11.         $anagrama = null;
  12.         dame_anagrama($cadena, $arreglo_anagramas);
  13.         $arreglo_anagramas = null;
  14.         return;
  15.     }
  16.     $combinaciones = null;
  17.     sort( $arreglo_anagramas );
  18.     foreach($arreglo_anagramas as $x){
  19.         echo $x . "<br>";
  20.     }
  21. }