def equilibreEtendue(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,'infini',0) else: curr=0 deseq='infini' longtext=longueur(texte[i:i+1]) while longtext<=n: suite=MEMO.get_etendue(i+curr+1) c=suite[2] l=suite[3] if min(longtext,c)==longtext: c=longtext if min(longtext,l)==l: l=longtext deseq_bis=l-c 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,c,l) curr+=1 longtext=longueur(texte[i:i+curr+1]) MEMO.add_etendue(i,res[0],res[1],res[2],res[3]) return res
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