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 (
|
from flask import (
|
||||||
Flask, session, redirect, url_for, request, render_template,
|
Flask, session, redirect, url_for, request, render_template,
|
||||||
g, abort
|
g, abort, flash
|
||||||
)
|
)
|
||||||
|
|
||||||
import config
|
import config
|
||||||
|
|
|
@ -45,12 +45,14 @@ def dump_ballots(ballots):
|
||||||
for r in ballot:
|
for r in ballot:
|
||||||
print(r)
|
print(r)
|
||||||
|
|
||||||
def runoff(ballots):
|
def runoff_forward(ballots):
|
||||||
count = {}
|
count = {}
|
||||||
candidates = {}
|
candidates = {}
|
||||||
for ballot in ballots:
|
for ballot in ballots:
|
||||||
for r in ballot:
|
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
|
candidates[r.id] = r
|
||||||
for ballot in ballots:
|
for ballot in ballots:
|
||||||
weight = max(r.vote_w for r in ballot)
|
weight = max(r.vote_w for r in ballot)
|
||||||
|
@ -72,6 +74,21 @@ def runoff(ballots):
|
||||||
]
|
]
|
||||||
return loser, new_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__":
|
if __name__ == "__main__":
|
||||||
args = get_args()
|
args = get_args()
|
||||||
|
|
||||||
|
@ -80,7 +97,7 @@ if __name__ == "__main__":
|
||||||
result = []
|
result = []
|
||||||
while max(len(b) for b in ballots):
|
while max(len(b) for b in ballots):
|
||||||
dump_ballots(ballots)
|
dump_ballots(ballots)
|
||||||
loser, ballots = runoff(ballots)
|
loser, ballots = runoff_forward(ballots)
|
||||||
result.append(loser)
|
result.append(loser)
|
||||||
result = reversed(result)
|
result = reversed(result)
|
||||||
print("final result")
|
print("final result")
|
||||||
|
|
Loading…
Reference in New Issue