def hondt(results, sieges, mini=0, maxi=None):
if not maxi:
maxi = sieges
nb_listes = len(results)
r = [(1E99,liste) for liste in range(nb_listes)] * mini
for liste,score in enumerate(results):
r += [ (score/float(x+1), liste) for x in range(mini,maxi) ]
r.sort()
repart = [0]*nb_listes
for score,liste in r[-sieges:]:
repart[liste]+=1
return repart
Par exemple pour repartir 20 sièges entre 4 listes qui ont fait respectivement 23,40,17 et 10% des voix:
>>> hondt([23,40,17,10], 20)
[5, 9, 4, 2]
Aucun commentaire:
Enregistrer un commentaire