1
« en: Jueves 4 de Diciembre de 2008, 23:52 »
Buenas noches a todos y felicidades por el foro. Os cuento:
Estoy intentando programar algo en c++ referente a la primitiva/bonoloto, ya sabeis casi 14 millones de combinaciones posibles (13983816 exactamente) y el problema que tengo es que a la hora de programar todas las combinaciones lo hago con 6 bucles for:
for (i=1;i<45;i++)
for (j=i+1;j<46;j++)
for (k=j+1k<47;k++)
for (l=k+1;l<48;l++)
for (m=l+1;m<49;m++)
for (n=m+1;n<50;n++)
y me tarda en torno a unos 10 minutos en recorrer todas las combinaciones posibles. Porque tarde 10 minutos no hay problema pero es que ahora me encuentro con una parte en la que las tengo que recorrer unas 1000 veces, osea 1000*13983816 (una pasada!!!!!)
He intentado hacer otro codigo, con 6 while...... e incluso con un solo while y varios if tambien lo he hecho pero nada de nada, sigue teniendo que recorrer todos los registros y tarda mucho o mejor dicho tarda lo mismo.
La pregunta es. ¿No habra algun algoritmo o libreria o ambas cosas o lo que sea; que pueda generar esas casi 14 millones de combinaciones en segundos?
Posible sé que es, porque no teneis nada mas que descargaros cualquier programa de primitivas/bonolotos que hay gratuitos y vereis como en unos 4 segundos, y tirando por lo alto, se generan todas las combinaciones. Pero ojo! solo en memoria, lo de la escritura en disco tarda algo mas, pero no 10 minutos.
Gracias por vuestra atencion. Cualquier idea sera bienvenida.
Saludos.
Resumiendo: Generar 14 millones de combinaciones en unos segundos.
PD: se me olvidaba deciros, por si sirve de algo, que he probado con varios compiladores, tanto con borland como devp, tambien con CodeBlocks, incluso en visual basic, en visual c++ y en c#. Y 3 tantos de lo mismo.