Compare commits

...

3 Commits

2 changed files with 21 additions and 4 deletions

2
app.py
View File

@ -10,7 +10,7 @@ import psycopg.rows
from flask import (
Flask, session, redirect, url_for, request, render_template,
g, abort
g, abort, flash
)
import config

View File

@ -45,12 +45,14 @@ def dump_ballots(ballots):
for r in ballot:
print(r)
def runoff(ballots):
def runoff_forward(ballots):
count = {}
candidates = {}
for ballot in ballots:
for r in ballot:
count[r.id] = [0] * len(ballot)
if r.id not in count or len(count[r.id]) < len(ballot):
log.debug("count[%d] <- %d elements", r.id, len(ballot))
count[r.id] = [0] * len(ballot)
candidates[r.id] = r
for ballot in ballots:
weight = max(r.vote_w for r in ballot)
@ -72,6 +74,21 @@ def runoff(ballots):
]
return loser, new_ballots
der runoff_backward(ballot):
for ballot in ballots:
for r in ballot:
if r.id not in count or len(count[r.id]) < len(ballot):
log.debug("count[%d] <- %d elements", r.id, len(ballot))
count[r.id] = [0] * len(ballot)
candidates[r.id] = r
pprint(candidates)
for ballot in ballots:
for pos, r in enumerate(ballot):
count[r.id][pos] += 1
pprint(count)
return loser, new_ballots
if __name__ == "__main__":
args = get_args()
@ -80,7 +97,7 @@ if __name__ == "__main__":
result = []
while max(len(b) for b in ballots):
dump_ballots(ballots)
loser, ballots = runoff(ballots)
loser, ballots = runoff_forward(ballots)
result.append(loser)
result = reversed(result)
print("final result")