#Datos aleatorios para que furule el codigo.
M=6
MasterList=[[9, 5, 2, 8, 9, 9],[3, 3, 5, 1, 4, 5, 1, 2],[1, 2, 9, 5, 4, 7, 3],[7, 5, 8, 8, 4],[5, 1, 4, 2]]
BestResult=[0]
#Esta funcion coje cada combinacion, hace calculos con ellas, y guarda el maximo resultado en BestResult.
def DoCalc(lista):
k=0
for numero in lista:
k+=(numero*numero)
if k%M>BestResult[0]:
BestResult[0]=k%M
#Esta parte inicia una lista con la que trabajar
SolutionList2=[]
for listt in MasterList:
SolutionList2.append(listt[0])
#En esta funcion esta la chicha, mira aqui para entender el codigo.
def Iter2(MasterList,i=0):
j=0
if i==len(MasterList)-1: #Si estamos en la ultima fila:
while j<len(MasterList[i]):
SolutionList2[i]=MasterList[i][j]
DoCalc(SolutionList2)
j+=1
else:
while j<len(MasterList[i]): #En el resto de casos
SolutionList2[i]=MasterList[i][j]
Iter2(MasterList,i+1)
j+=1
return BestResult[0]
#Esto imprime el resultado en pantalla, el resultado es BestResult, que no te interesa.
print(Iter2(MasterList))