Compare commits
3 Commits
b88b0724c7
...
b92f8490a1
Author | SHA1 | Date |
---|---|---|
Peter J. Holzer | b92f8490a1 | |
Peter J. Holzer | a147032c61 | |
Peter J. Holzer | f8226fa5a2 |
2
app.py
2
app.py
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue