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);
?>