def equilibreGlouton(words, textEquilibre, n): if(words == []): return textEquilibre else: if(textEquilibre == []): textEquilibre = [[words[0][:]]] words.pop(0) return equilibreGlouton(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 = longShortDistance(textWoTransfer) distanceWoT = maxMinWoT[0]-maxMinWoT[1] maxMinWT = longShortDistance(textWithTransfer) distanceWT = maxMinWT[0]-maxMinWT[1] if(distanceWoT < distanceWT): return equilibreGlouton(words, textWoTransfer, n) else: return equilibreGlouton(words, textWithTransfer, n) else: words.pop(0) return equilibreGlouton(words, textWithTransfer, n)
def fusionTextsMinMax(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:", longShortDistance(resultText) return True, longShortDistance(resultText), resultText else: #print "Fusion impossible" return False,[0,0],[]