def equilibreGloutonEtendu(words, textEquilibre, n): if(words == []): return textEquilibre else: if(textEquilibre == []): textEquilibre = [[words[0][:]]] words.pop(0) return equilibreGloutonEtendu(words, textEquilibre, n) textWithTransfer = textEquilibre[:] textWithTransfer.append([words[0][:]]) #print "WT", textWithTransfer if(possibleString(textEquilibre[-1] + [words[0]], n)): lastString = textEquilibre[-1][:] + [words[0][:]] textWoTransfer = textEquilibre[:] textWoTransfer.pop(-1) textWoTransfer.append(lastString) words.pop(0) #print "WoT", textWoTransfer #maxMinWoT = etendue(textWoTransfer) distanceWoT = etendue(textWoTransfer)#maxMinWoT[0]-maxMinWoT[1] #maxMinWT = etendue(textWithTransfer) distanceWT = etendue(textWithTransfer)#maxMinWT[0]-maxMinWT[1] if(distanceWoT < distanceWT): return equilibreGloutonEtendu(words, textWoTransfer, n) else: return equilibreGloutonEtendu(words, textWithTransfer, n) else: words.pop(0) return equilibreGloutonEtendu(words, textWithTransfer, n)
def fusionTextesEtendue(text1, text2, stringLength): #print "Try to fusion" fusionedString = text1[-1][:] + text2[0][:] if(possibleString(fusionedString, stringLength)): #print "Fusioned string: ", fusionedString #print "is possible" fusionedLength = longueur(fusionedString) #print "with length", fusionedLength if(len(text1)>0): text1.pop() if(len(text2)>0): text2.pop(0) resultText = text1 + [fusionedString] + text2 #print "minmax for fusioned text:", etendue(resultText) return True, etendue(resultText), resultText else: #print "Fusion impossible" return False,[0,0],[]
def equilibreEtendu(texte, n): textEq = [[texte[0][:]]] texte.pop(0) result = equilibreGloutonEtendu(texte, textEq, n) #print result return result, etendue(result)