コード例 #1
0
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],[]