Hola,
Estoy haciendo pruebas para programar el tratamiento de grupos de números, de forma que pueda comparar cada una de las posibles combinaciones de la loto 6/49 (aprox. 14Millones) con todas las líneas que pueda tener un grupo.
Un grupo puede estar formado por 100, 200, 10.000 o más líneas y la cantidad de números de cada línea puede ser también variable. Un ejemplo de grupo sería:
12,15,27
1,13,43,44,48,49
3,9,16,27,29
Este tendría solamente 3 líneas pero me planteo trabajar con grupos de 10.000 o 50.000 líneas o incluso más.
El problema que tengo es la lentitud de los procesos de evaluación, tarda muchisimo y no se si es por la definición del tipo de variables, por la ineficiencia del código empleado o por ambas cuestiones.
Actualmente estoy utilizando un array numérico bidimensional para contener todas las combinaciones posibles comb[1..13983816][1..6] y otro array de tipo string para almacenar los números del grupo a evaluar.
El pseudocodigo que empleo es el siguiente (suponiendo que el grupo tiene 80 líneas):
Código Delphi
[-]aciertos_esperados='0,1'
Por_Cada_Combinacion_Posible (i=0 hasta 13983816)
Por_Cada_Linea_De_Grupo (L=0 hasta 80)
aciertos=Contar_Aciertos( comb[i], grupo[L] )
if aciertos está en aciertos_esperados
EsValida=True
si no
EsValida=False
Salir del bucle de grupo
fin
fin
fin
La funcion Contar_Aciertos compara cada numero de la combinacion comb[i] con cada número de los que aparece en la línea grupo[L]
Pues este es el problema. Tarda muchisimo y queria ver si alguno de vosotros tiene experiencia sobre este caso para conseguir que el proceso sea más rápido, bien definiendo las variables de alguna forma determinada o con otro tipo de proceso….
Muchas gracias.
Paco.