Subversion Repositories Remote Hare Voting

Rev

Rev 63 | Rev 67 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 63 Rev 64
Line 22... Line 22...
22
        <tr><td>CSV file of ballots:
22
        <tr><td>CSV file of ballots:
23
                <td><input type=file size=70 name=name>
23
                <td><input type=file size=70 name=name>
24
        </table>
24
        </table>
25
        <p>
25
        <p>
26
        <input type=submit name="run1" value="Run 1 Time">
26
        <input type=submit name="run1" value="Run 1 Time">
27
        <input type=submit name="run1000" value="Run 1000 Times">
27
        <input type=submit name="run500" value="Run 500 Times">
28
	<input type=submit name="runparallel" value="Run Parallel Universes">
28
	<input type=submit name="runparallel" value="Run All Ways">
29
    </form>
29
    </form>
30
    <p>
30
    <p>
31
Input file format is given
31
Input file format is given
32
<a href="http://www.bikmort.com/wiki/index.php?title=Hare_Voting_Procedure">here</a>.
32
<a href="http://www.bikmort.com/wiki/index.php?title=Hare_Voting_Procedure">here</a>.
33
Little error checking is done, so be sure to review the trace output.
33
Little error checking is done, so be sure to review the trace output.
34
The source code is available <a href="%s?fetch=yes">here</a>.
34
The source code is available <a href="%s?fetch=yes">here</a>.
35
<p>
35
<p>
36
<small>%s</small>
36
<small>%s</small>
37
<hr>
37
<hr>
38
<pre>
38
<pre>
39
""" % (formaction, formaction, "$Id: vote.py 63 2007-09-25 03:00:26Z jtkorb $"))
39
""" % (formaction, formaction, "$Id: vote.py 64 2007-10-15 15:48:23Z jtkorb $"))
40
    return
40
    return
41
 
41
 
42
def emitPostHTML():
42
def emitPostHTML():
43
    emitHTML("""</pre>
43
    emitHTML("""</pre>
44
</body>
44
</body>
Line 63... Line 63...
63
    for i in range(nTimes):
63
    for i in range(nTimes):
64
        results = str(tally.dotally(nWinners, ballots))
64
        results = str(tally.dotally(nWinners, ballots))
65
        if not summary.has_key(results):
65
        if not summary.has_key(results):
66
            summary[results] = 0
66
            summary[results] = 0
67
        summary[results] = summary[results] + 1
67
        summary[results] = summary[results] + 1
68
    tally.trace(0, "SUMMARY AFTER %d TIMES" % nTimes)
68
    tally.trace(0, "\nSUMMARY AFTER %d TIMES" % nTimes)
69
    l = summary.items()
69
    l = summary.items()
70
    l.sort(lambda x,y: cmp(y[1], x[1]))
70
    l.sort(lambda x,y: cmp(y[1], x[1]))
71
    for pair in l:
71
    for pair in l:
72
        tally.trace(0, "%3d %s" % (pair[1], pair[0]))
72
        tally.trace(0, "%3d %s" % (pair[1], pair[0]))
73
 
73
 
Line 98... Line 98...
98
        tally.trace(0, contents)
98
        tally.trace(0, contents)
99
 
99
 
100
        nWinners, ballots = parseinput.parsestring(contents)
100
        nWinners, ballots = parseinput.parsestring(contents)
101
        if form.has_key("run1"):
101
        if form.has_key("run1"):
102
            doone(nWinners, ballots)
102
            doone(nWinners, ballots)
103
        elif form.has_key("run1000"):
103
        elif form.has_key("run500"):
104
            domany(1000, nWinners, ballots)
104
            domany(500, nWinners, ballots)
105
        elif form.has_key("runparallel"):
105
        elif form.has_key("runparallel"):
106
            doparallel(nWinners, ballots)
106
            doparallel(nWinners, ballots)
107
        else:
107
        else:
108
            print "UNEXPECTED SUBMIT BUTTON: %s" % form
108
            print "UNEXPECTED SUBMIT BUTTON: %s" % form
109
                
109