From kragen@dnaco.net Sat Aug 29 01:34:49 1998 Date: Sat, 29 Aug 1998 01:34:48 -0400 (EDT) From: Kragen To: clug-user@clug.org Subject: voting code Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2133787099-195626716-904368216=:24215" Content-ID: X-Keywords: X-UID: 1576 Status: O X-Status: ---2133787099-195626716-904368216=:24215 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Content-ID: 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 Sitaker 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: Content-Description: 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 ---2133787099-195626716-904368216=:24215--