Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2015, 09:05
oknarf1976
 
Fecha de Ingreso: enero-2015
Ubicación: en mi casa
Mensajes: 15
Antigüedad: 9 años, 10 meses
Puntos: 0
Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32 by

Hola a todos
Estuve viendo la forma de hacer un algoritmo que me muestre todas las combinaciones posibles entre el numero 0 al 45, mostrado en una columna de 6 numeros.

Lo que intento hacer es ver cuantas combinaciones de numeros hay en un juego de loteria, donde hay que sacar 6 numeros diferentes, de entre 0 a 45, y la idea es mostrar todos los numeros de combinaciones, sin repetir ninguno.

Encontre un codigo, pero me da este error:

Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32 bytes)

Ese error me da al querer poner el numero 6 en vez de 3 en esta linea:

$pe = permutations($words,3);

Segun entiendo, necesito unos 67 GB para poder mostrar todas las permutaciones de a 6 numeros del 00 al 45.

¿Alguna idea de como solucionarlo?
¿Hay forma de mandar la salida a un archivo de texto u otro formato?

Gracias

CODIGO:

<?PHP
ini_set('memory_limit', '65000M'); //Probe con memory_limit = -1 y no funciona
ini_set('max_execution_time', '300');

function permutations($arr,$n)
{
$res = array();

foreach ($arr as $w)
{
if ($n==1) $res[] = $w;
else
{
$perms = permutations($arr,$n-1);

foreach ($perms as $p)
{
$res[] = $w." ".$p;
}
}
}

return $res;
}

// Your array
$words = array('00','01','02','03','04','05','06','07','08' ,'09','10','11','12','13','14','15','16','17','18' ,'19','20','21','22','23','24','25','26','27','28' ,'29','30','31','32','33','34','35','36','37','38' ,'39','40','41','42','43','44','45');

// Get permutation by groups of 3 elements
$pe = permutations($words,3);

// Print it out
print_r($pe);
?>