diff --git a/pralo.py b/pralo.py index e01ebaa..d8e7e4f 100644 --- a/pralo.py +++ b/pralo.py @@ -41,33 +41,43 @@ class Pralo(): def echange(l): """Algo recursif pour gérer les échanges""" - l.sort() + l.sort(key = lambda s: s[1]) m = l[0] M = l[-1] # Si celui qui doit le plus doit moins que le crédit que celui qui a le plus grand crédit # Il va donc tout lui donner - if abs(m) <= abs(M): - M2 = M + m - print("{em} donne tout à {eM} donc {em} devient {eM2}".format(em = m ,eM = M , eM2 = M2)) + if abs(m[1]) <= abs(M[1]): + M2 = M[1] + m[1] + print("{em} donne {em_n} à {eM} donc {em} devient {eM2}".format(em = m[0], em_n = abs(m[1]), eM = M[0] , eM2 = M2)) # On enleve le minimum l.remove(m) # ON change la valeur du max - l[-1] = M2 + l[-1] = [M[0],M2] # Sinon il donne juste de quoi compenser else: - m2 = m + M - print("{em} donne {eM} à {eM} et devient {em2}".format(em = m , em2 = m2 , eM = M)) + m2 = m[1] + M[1] + print("{em} donne {eM_n} à {eM} et devient {em2}".format(em = m[0] , em2 = m2 , eM = M[0], eM_n = M[1])) # On eleve le max l.remove(M) # On change la valeur du min - l[0] = m2 + l[0] = [m[0], m2] if (len(l) > 1): - print(l) + #print(l) echange(l) + +def normalise(compte): + """Centre en 0 les comptes""" + moyenne = sum([c[1] for c in compte]) / len(compte) + compte_normalise = compte + for (i,n) in enumerate(compte): + compte_normalise[i][1] = compte[i][1] - moyenne + return compte_normalise + + # ------------------------------ # Bloc principal # ------------------------------ @@ -75,9 +85,8 @@ def echange(l): if __name__ == '__main__': # État des comptes - compte = [123 , 145 , 43 , 89 , 0] - moyenne = sum(compte) / len(compte) - compte_normalise = [c - moyenne for c in compte] + compte = [['bob', 123] , ['pipo', 145] , ['hiphop', 43] , ['dede', 89] , ['chic', 0]] + compte_normalise = normalise(compte) print(compte_normalise) echange(compte_normalise)