Hola Danvader,
la clave por la que pude hacer el programa bastante más rápido de lo que tenía al principio es la siguiente.
Comencé utilizando una función llamada "índex" para poder determinar el índice de una combinación X.
Si las 14M combinaciones estaban en "lista_total", el indice de la combinación X era:
Indice_de_X = lista_total.index(X)
Implicitamente, "index" hace una búsqueda secuencial y tarda mucho en recorrer los 14M
Entonces descubrí un nuevo método para buscar elementos en una lista muy grande (como los 14M). Es una librería llamada "bisect". La búsqueda no es secuencial y es muchísimo más rápida. Eso es lo que me permitía resolver el problema a razón de 1.000.000 en 30 minutos. (Ya solo con esto, ha merecido la pena el tiempo dedicado a este tema de los índices).
Acabo de buscar si hay lo mismo para VB. Según el siguiente link:
https://docs.microsoft.com/en-us/dotnet ... ew=net-6.0
Pudiera ser que esto fuese lo equivalente en VB.
Saludos,
Paco