def equilibreVar(texte, n): global MEMO MEMO=Memo() for i in range (len(texte)-1,-1,-1): #Pour i allant de l'indice du dernier mot au premier if longueur(texte[i:])<=n: res=([texte[i:]],0) else: curr=0 deseq='infini' while longueur(texte[i:i+curr+1])<=n: suite=MEMO.get(i+curr+1) deseq_bis=variance([texte[i:i+curr+1]]+suite[0]) if min(deseq,deseq_bis)==deseq_bis: #on notera que la fonction min a été surchargée pour #considérer 'infini' comme l'infini deseq=deseq_bis res=([texte[i:i+curr+1]]+suite[0],deseq) curr+=1 MEMO.add(i,res[0],res[1]) return res