ordynacje/obliczanieMandatow.py

44 lines
1.3 KiB
Python
Raw Normal View History

2018-06-30 10:33:00 +02:00
#!/usr/bin/python
2018-06-30 15:28:30 +02:00
from ordynacja.models import Glos, Komitet
2018-06-30 10:33:00 +02:00
class obliczanieMandatow(object):
@staticmethod
2018-06-30 15:28:30 +02:00
def dhondta(komitety, glosy, mandaty):
2018-06-30 10:33:00 +02:00
glosy_kopia = list(glosy)
dzielniki_glosy = [ 1 for i in range(len(glosy_kopia)) ]
2018-06-30 15:28:30 +02:00
ilosc_mandatow = [ 0 for i in range(len(glosy_kopia)) ]
2018-06-30 10:33:00 +02:00
while(mandaty != 0):
index = 0
max = glosy_kopia[0]
for i in range(1,len(glosy_kopia)):
if(glosy_kopia[i]>=max):
if(glosy_kopia[i]==max):
if(glosy[i]>glosy[index]):
max = glosy_kopia[i]
index = i
else:
max = glosy_kopia[i]
index = i
dzielniki_glosy[index] = dzielniki_glosy[index] + 1
print glosy_kopia[index], '', komitety[index]
glosy_kopia[index] = glosy[index] / dzielniki_glosy[index]
mandaty = mandaty - 1
2018-06-30 15:28:30 +02:00
ilosc_mandatow[index] = ilosc_mandatow[index] + 1
return ilosc_mandatow
2018-06-30 10:33:00 +02:00
2018-06-30 15:28:30 +02:00
liczba_okregow = 41
mandaty_w_okregach = [12,8,14,12,13,15,12,12,10,9,12,8,14,10,9,10,9,12,20,12,12,11,15,14,12,14,9,7,9,9,12,9,16,8,10,12,9,9,10,8,12]
2018-06-30 10:33:00 +02:00
2018-06-30 15:28:30 +02:00
for i in range(liczba_okregow):
komitety = []
liczba_glosow = []
2018-06-30 10:33:00 +02:00
2018-06-30 15:28:30 +02:00
komitetyBaza = Komitet.objects().all()
for j in KomitetBaza:
komitety.append(j.name)
glosy = Glos.objects().filter(okreg=i+1).order_by("kw_id")
for g in glosy:
liczba_glosow.append(g.liczba)
obliczanieMandatow.dhondta(komitety, liczba_glosow, mandaty_w_okregach[i])