PHP - Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 32 by

   
Vista:

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

Publicado por FRANCO oknarf1976@hotmail.com (1 intervención) el 11/02/2015 16:46:08
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:

1
2
3
4
5
6
7
8
9
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
<?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);
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

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

Publicado por xve (5523 intervenciones) el 11/02/2015 19:20:09
Hola Franco, he realizado una prueba, intentando optimizar un poco eliminando el array $word por un simple bucle, y la verdad es que al hacerlo con 6 valores, se me ha comido todos los 8GB de Ram de mi maquina, y he tenido que finalizar reiniciando el servidor web.

Creo que son como mas de 13 millones de combinaciones, que por supuesto, es casi imposible mostrarlas en un navegador...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar