From kragen@dnaco.net Sat Aug 29 01:34:49 1998
Date: Sat, 29 Aug 1998 01:34:48 -0400 (EDT)
From: Kragen <kragen@dnaco.net>
To: clug-user@clug.org
Subject: voting code
Message-ID: <Pine.SUN.3.96.980829012820.11646A-101000@picard.dnaco.net>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-2133787099-195626716-904368216=:24215"
Content-ID: <Pine.SUN.3.96.980829012820.11646B@picard.dnaco.net>
X-Keywords:
X-UID: 1576
Status: O
X-Status: 

---2133787099-195626716-904368216=:24215
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.SUN.3.96.980829012820.11646C@picard.dnaco.net>

OK, here's the voting code.  Condorcet, Borda, approval voting, and
simple plurality are included.

It may not be totally clear what the code expects of its input.

Condorcet, Borda, simple plurality, and check-votes expect every line
to list all the candidates in the order of the voter's preference.
(Each line is a vote, you see.)  check-votes will tell you if the input
doesn't meet expectations, hopefully helping you fix misspellings and
such, and outputs a list of candidate names.

check-votes filename | fix-votes - filename will add missing candidates
in random order to the ends of the lines.  Borda will not work very
well if the lines all have different numbers of candidates.

It might be desirable to implement Borda properly for ballots with
different numbers of candidates.

Approval also takes each line as a ballot, but just interprets it as a
list of candidates of whom that voter approves.  Order is unimportant.
So lines listing all the candidates are rather silly.

A couple of simple voting situations with no clear Condorcet winner are
included.

Kragen

-- 
<kragen@pobox.com>       Kragen Sitaker     <http://www.pobox.com/~kragen/>
We are forming cells within a global brain and we are excited that we might
start to think collectively.  What becomes of us still hangs crucially on
how we think individually.  -- Tim Berners-Lee, inventor of the Web

---2133787099-195626716-904368216=:24215
Content-Type: APPLICATION/OCTET-STREAM; NAME="voting.tar.gz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.980829012336.24215B@gentle>
Content-Description: 

H4sIAD6Q5zUAA+0ba3MiudFfmV/RO8ZZexfGDA9TtTbOJXu3ValcJVWbVL54
HSIGYbQeZsiMsE18/Pd0S5pBA9hsqgzO3k1XGZDU6m69+iX5LpYiujk92CVA
u9HtdOAAwO92fPoGv91W3wYaAGedrt/1G42zDrb6/tnZAXR2KpWBWSpZAnBw
m7AbHj2Hx5N0HwLtF+70+t/xRIzmdSzxlx8krupz6+93mi29/p1Oq9vtYk3r
rNs6gMaLS7IBfuPrf/jmdJYmpwMRnU55EkL93jkEvRtA7QZgCQcRQRAnCQ8k
jOJkwtQXDOJkyGCaxDcJm3gOzhCkMhGBPHcmc/ghFBFP9c97xNQ/q9Hy93F1
wh5UsQbVidAtJ+fO/ViEHI4vLk/g0anoztCDdBoKJF0xJLAmo1uZztKxYViD
K4OARPvX2ChGcBzFEoZ8hAhDyLkq8pW8iARz6ahaROvVC+BhSgQzIS6/jdxa
vwtrxKbfRn7OwnHS2QBQ9CGNj3DV1FEhFKnEURoqOB997BLGAQtx6PiTFum4
4XnVw8ccf6HZKVmyuvrlFU4Vfjaugf87J0h4lWkiIgnuJ5GkEpQE90KODc4H
WKfhX7s0f5WQpbRaOAQ9CkexzEf5prcyc4bRP9SmC+JIMtx1oySeLGcKZLzs
BDzCzcZT70tEDPMJ+pLtg7zbE62GDrbyByHBP3fUKnFLmL/+2YM/hKE5CWN2
xy1hivwVjQbScF77SP9PYPS/Osq74rFF/0On7Wf6v9npkP1vNruNUv/vAzbq
/x9jYPBHpd2DeBbJNd1+FLBoKIaMTkUPjk+0lqdTopV8MENjEckUjQZf0+eE
ZqtzG5mUmCajlZcqGAVZwKvXlZJeyvFY7S/gfW+Vt9Y9JF3Colvc6sQ5TiQ8
FvoOFnDRQ11u17HFAm75PLVHe+5ozTBhU3gEt9r/IldkQG0Ai5zb+f+7NjDn
H/XtME4CLnfBY8v5b7aaZ8b/b5whkP/X9MvzvxfYcP7ts34If6HT+jHbHmj8
o4gnNUBjLsecXMMU4oh7iPkzegHA0FpaygFNOEsDjmU8eahQeALxCMbxPZ6g
aA4x0bDx75EkkpomfMTxGA/J4iPOhOivCoHYIgxrRBC1VJLyGgw4OkroqHja
aUr70xCP6XG1T55Nrwf+CfyeTi0V8RNdFfhglZtY1triuCrQRfiqFdvRlCFR
S9GRC7Gm1pR7sVRrpL6qAt0v8DyoHqrWOglAukw1fiUu8B78JYbxuaqKofbZ
rqrielG/zApfr1HLvVcO1iHO4S0u1QxXYWXajc+utZciVgN+xyPdTa/dXE02
9rxniEXemrfOm9j14HFBfciHRi8nlSmsIRmB2F0shuDOIhEJKVgo/oNLeMfC
GXfhniVYfaP2xO8GnMl0I7vlUHHc8MsvPXKqll7kIaiu4D64NXDnLiRczpII
98KYq82EM0uCPhi8uQfw2aCMGHl3cQRS4IalDaJxcM41lXxctCGUJLRHFuTk
5w1+1tCgUevdcoShBVLCLXnuOMpuWTOv1rSaYyg71YOra2uPaOzHnMnCctK1
iGo79jOXXEU7j0WaixpQW8UlgktKJKtY4M7LqoQWf3Hi2tNqWzWnos7NcYpx
BCMbvMrpBGc+32yuXUjdE6Bd5KqZRYnxdIFHgn2NcdmPXUD0dXqI4qLdpDBJ
22bqUUQjY0wWulg7WNAAzD63FuG1ter3A5n9H/Pgdkfpn632v9nK7X8XXX+y
/+1mt7T/+4Ct9v8j7QwTAJO+MnkgjKHRpgRMBmMy7RORplMehqTg0dTIwCNV
nWJxRjoE+03DWcJCz7LLJpERzSYD8iiqGTb+1Mh5SkMnThSeseKkB43OdrOW
nICbJVz4ZjxN3bWCg83xjO32F5H6IwyLhn05Fml/ozNQoJe5BM8QMFxN0LPE
s5I1T3dW6tzO1vzt7z/+9PkzuD8T5aoHoTLaOQHUyzChIEqOWYT2MOAmh5HP
mjIlWziiyP75Cp4Owt6vW5ZMok9Eh4yANjFVD60H7S3XfKMBwV9anOIkPhWJ
baS8tF3WVNZADcsd4myIKJDWhERsouag9hyCyvTgIqk12hBDsg0xJBooWF3O
ldVUc3aBy6SXsDiqf1X7b4FNp5yRMyxotcI5aDnVQFcIPTOdVg5yhfnlE8w/
suithDGxjz7AmiirZBRD9MFnUkuJG0+rDeVnBuRgGkGW+8J2CwpL5SrU19aO
v34w9l+rRCHnu+CxLf/X9ptZ/q/d8js6/i/t/15gq/3/JFCt5ttDh9f1YByL
gJs43HvagpoE+7YLHVuRqEYKrsiM5HoCfYUtGTeMWr49redU1s3Ja6/E68Bq
/q8ezIOQvywPutXX5/2J+38sZP7/WZfOfxtDgvL87wMYDCBw9Cf+ATOf+AcD
8/naMpawOzDnfyQedhX9b3//0e50rfhf5f/9Tpn/3wt8g/1/QGc/iCfTkGMg
pD36wVxFAjqtT7E/fRfT/gmW4onO+XuKTv6AIB4hwhTDBJGqXC1TVGuAPbKL
/xQrKWolXMptyzG36FN6n+hjKFOFf4IUE44Oh0otaLb9dDwbjcL8tcQPRCtP
J9ANpZB8grEsH8msIhryB/Mb26ZZMG5hUn8idF7obhegXjeXlYocdlBiFrlV
FH165kHErjTqtWqwKywEiz74BcxiC3Uxsi/ynLYWObsFxcnsrycn4PRL+v60
BheXOtNhlrS/kgEpZESKTt2GLkhcO23VPqAT5hoMdT1aFOP8qYyJ6j/kaudV
1zmo7HFRqgq6pmoClN+YfWf3tSgKsV/ZJNoX3DTm7B2ICkbpDctrH9cXB6P/
cZQYpFPa46a+9AWleBFPcKv/1136f+gBYutZs13Gf3sBSumRHmaAG1469GGK
2ODgL4VgWvUXmD6/vsPwGwRz/hPOhpMXDvty2Hb+O63WyvvvZrvZLs//PgDd
uCS+YyEMY3o3kJX0tvAAfmLBWHttSg2ot1nAqZISNeoyfcy0X0cexxSNCD2+
0rWE/daiSs4cTFkiRaCuhXJTi4z+hL7eTKJXmDqVordX0y9OqdLc4CAd8zZZ
UVZvS0ZKKs/Rj5L1aApv2JCFY11zvnNyO2f91OkPJw+H3jlPWkYnT4q9c/Tx
cexX9O++D/Vozn+2RDvhsS3/2/WX97+dlor/Gq1mef73AVvjP0GB3wTP9Jpy
wMaN2oHiNZ3itbWDepPkahp86FIImesInUFe/mOA9f8CR+owbU0hH2UV1i2q
9Yqdbr2yp0uq2roypXdJy6vSMUthMgulwFFbt94YwtTr+lorRkSlUfjwzcq1
qboNVZ2si9DKkmN2Zbrp1Y3ObOeddVLbpLRNbZbNNsXl+1QzR5XvQ+WUUEIJ
JZRQQgkllFBCCSWUUEIJJZRQQgkllFBCCSWUsEP4L/slr3kAUAAA
---2133787099-195626716-904368216=:24215--

