Last active
May 16, 2016 15:49
-
-
Save blole/3f689b3425ecd05bd142842f7caeacac to your computer and use it in GitHub Desktop.
Schulze non-proportional ordering of the Eurovision 2016 final results
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python2 | |
| # | |
| # Schulze non-proportional ordering of the Eurovision 2016 final results. | |
| # data from http://eurovisionworld.com/?eurovision=2016 | |
| from pyvotecore.schulze_npr import SchulzeNPR | |
| def transpose(matrix): | |
| return map(list, zip(*matrix)) | |
| countries = [ | |
| 'Ukraine', 'Australia', 'Russia', 'Bulgaria', 'Sweden', 'France', | |
| 'Armenia', 'Poland', 'Lithuania', 'Belgium', 'Netherlands', 'Malta', | |
| 'Austria', 'Israel', 'Latvia', 'Italy', 'Azerbaijan', 'Serbia', | |
| 'Hungary', 'Georgia', 'Cyprus', 'Spain', 'Croatia', | |
| 'United Kingdom', 'Czech Republic', 'Germany' | |
| ] | |
| jury = [ | |
| [0, 0, 2, 0, 10, 7, 3, 12, 0, 0, 0, 0, 12, 7, 0, 0, 12, 12, 7, 2, 0, 0, 0, 12, 10, 12, 8, 0, 12, 0, 3, 4, 12, 0, 12, 12, 12, 0, 0, 6, 0, 10], | |
| [12,5, 0, 12, 7, 6, 12, 10, 8, 12, 10, 0, 10, 10, 8, 6, 8, 8, 6, 7, 12, 10, 0, 10, 6, 5, 12, 3, 10, 4, 12, 10, 10, 2, 0, 6, 6, 8, 12, 12, 5, 8 ], | |
| [7, 2, 0, 3, 12, 12, 0, 5, 6, 6, 12, 0, 0, 0, 0, 1, 0, 0, 0, 12, 0, 8, 0, 0, 0, 7, 0, 4, 7, 8, 0, 0, 0, 0, 7, 1, 0, 4, 6, 0, 0, 0 ], | |
| [4, 7, 8, 0, 8, 1, 6, 3, 0, 0, 0, 0, 6, 0, 0, 10, 10, 0, 0, 0, 0, 0, 10, 7, 0, 1, 2, 10, 0, 2, 0, 8, 3, 0, 0, 4, 10, 0, 0, 1, 1, 5 ], | |
| [0, 0, 0, 8, 0, 8, 0, 0, 0, 0, 0, 12, 4, 12, 12, 5, 0, 6, 10, 0, 4, 6, 5, 0, 2, 8, 0, 0, 6, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 ], | |
| [10,12, 6, 7, 0, 0, 8, 7, 0, 8, 7, 5, 0, 1, 1, 0, 0, 4, 0, 6, 0, 2, 3, 8, 7, 0, 1, 6, 0, 5, 5, 0, 1, 7, 0, 0, 0, 7, 8, 0, 0, 6 ], | |
| [0, 0, 0, 2, 0, 3, 0, 2, 12, 4, 8, 0, 0, 0, 0, 2, 0, 0, 0, 10, 1, 0, 0, 2, 0, 6, 4, 7, 5, 10, 2, 0, 0, 12, 0, 3, 4, 12, 4, 0, 0, 0 ], | |
| [0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], | |
| [0, 0, 7, 1, 5, 10, 0, 0, 1, 0, 0, 3, 5, 5, 6, 0, 0, 5, 1, 0, 3, 0, 0, 1, 0, 10, 0, 0, 4, 0, 0, 2, 2, 0, 0, 8, 0, 0, 2, 7, 12, 4 ], | |
| [0, 4, 12, 5, 0, 4, 0, 0, 10, 0, 0, 2, 8, 0, 0, 0, 4, 10, 5, 0, 0, 3, 12, 6, 0, 0, 5, 0, 0, 3, 4, 5, 0, 0, 0, 0, 8, 0, 0, 10, 10, 0 ], | |
| [0, 0, 3, 0, 0, 0, 4, 0, 2, 0, 0, 7, 7, 6, 10, 7, 2, 0, 4, 0, 6, 12, 8, 0, 4, 3, 0, 0, 0, 0, 0, 6, 0, 0, 4, 5, 1, 3, 5, 5, 0, 0 ], | |
| [2, 8, 0, 10, 6, 5, 0, 0, 7, 0, 6, 6, 0, 2, 5, 4, 0, 0, 0, 4, 10, 4, 0, 0, 5, 4, 0, 0, 3, 12, 0, 0, 0, 8, 3, 10, 0, 6, 7, 0, 0, 0 ], | |
| [0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 4, 0, 0 ], | |
| [3, 0, 10, 0, 3, 0, 2, 0, 0, 7, 5, 0, 2, 0, 7, 0, 5, 3, 12, 0, 0, 0, 4, 0, 8, 2, 6, 1, 0, 0, 7, 3, 7, 0, 0, 7, 2, 1, 0, 8, 6, 3 ], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 3, 7, 2, 0, 8, 0, 1, 5, 0, 0, 7, 0, 0, 0, 0, 0, 6, 3, 0, 0, 7, 0, 0, 3, 8, 0 ], | |
| [8, 0, 0, 0, 0, 0, 10, 0, 0, 3, 3, 0, 0, 0, 2, 12, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 0, 8, 0, 0, 6, 12, 0, 0, 10, 0, 0, 5, 0, 2, 0, 0 ], | |
| [0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 10, 0, 0, 0, 2, 10, 0, 7, 0 ], | |
| [0, 0, 0, 0, 0, 0, 0, 8, 5, 2, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 2 ], | |
| [1, 0, 0, 0, 4, 0, 0, 0, 0, 5, 4, 10, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 2, 0, 3, 10, 0, 0, 2, 0 ], | |
| [0, 10, 0, 0, 0, 0, 7, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 5, 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 8, 5, 6, 0, 0, 0, 0, 0, 3, 12], | |
| [0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 0, 0, 5, 2, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 7 ], | |
| [6, 3, 5, 0, 1, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 5, 0, 0, 4, 12, 0, 0, 2, 8, 0, 0, 7, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0 ], | |
| [0, 0, 1, 6, 0, 0, 0, 4, 0, 0, 1, 8, 0, 0, 0, 0, 6, 2, 0, 0, 0, 7, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ], | |
| [5, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 6, 8, 2, 0, 0, 0, 0, 0, 0 ], | |
| [0, 1, 0, 4, 0, 0, 1, 6, 0, 10, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 3, 0, 0, 0 ], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] | |
| ] | |
| tele = [ | |
| [6, 10, 8, 10, 10, 10, 2, 7, 10, 10, 7, 12, 3, 8, 12, 10, 6, 10, 6, 6, 12, 0, 4, 8, 12, 10, 10, 4, 10, 8, 7, 4, 12, 10, 12, 7, 7, 7, 7, 4, 0, 5 ], | |
| [12,0, 0, 3, 2, 1, 4, 3, 5, 5, 5, 1, 10, 4, 7, 0, 3, 1, 5, 5, 3, 8, 6, 5, 0, 6, 5, 12, 5, 0, 5, 8, 7, 4, 5, 6, 3, 4, 12, 1, 4, 6 ], | |
| [7, 12, 5, 8, 12, 12, 6, 6, 12, 8, 10, 10, 4, 12, 8, 6, 8, 8, 12, 10, 10, 7, 8, 10, 8, 12, 8, 10, 12, 10, 3, 6, 8, 0, 10, 12, 10, 8, 8, 6, 12, 7 ], | |
| [8, 0, 10, 5, 8, 4, 5, 2, 0, 1, 12, 5, 0, 0, 4, 5, 10, 3, 4, 7, 4, 0, 5, 7, 7, 1, 0, 8, 2, 5, 1, 5, 3, 0, 3, 8, 2, 12, 4, 0, 2, 8 ], | |
| [3, 2, 0, 7, 0, 2, 1, 0, 3, 7, 1, 2, 12, 10, 10, 2, 0, 0, 8, 0, 7, 12, 2, 0, 0, 7, 7, 0, 0, 0, 2, 7, 10, 2, 4, 1, 5, 1, 0, 0, 1, 1 ], | |
| [0, 7, 7, 1, 4, 0, 8, 4, 0, 2, 6, 0, 2, 2, 3, 0, 0, 0, 0, 4, 1, 5, 0, 12, 5, 0, 3, 2, 6, 1, 4, 1, 0, 3, 0, 0, 0, 10, 3, 3, 0, 0 ], | |
| [2, 0, 0, 0, 0, 7, 7, 0, 8, 0, 8, 8, 0, 0, 0, 12, 7, 12, 2, 8, 0, 0, 0, 6, 1, 0, 0, 0, 7, 0, 8, 0, 2, 12, 2, 2, 0, 6, 0, 0, 7, 0 ], | |
| [5, 1, 0, 12, 3, 6, 12, 0, 6, 4, 2, 7, 5, 1, 5, 7, 2, 4, 10, 3, 8, 10, 10, 4, 10, 5, 6, 0, 0, 0, 10, 10, 0, 5, 7, 0, 4, 5, 10, 5, 8, 10], | |
| [4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 5, 0, 0, 0, 5, 0, 0, 0, 4, 12, 0, 2, 8, 0, 0, 3, 2, 0, 12, 0, 0, 8, 0, 0, 0, 6, 0, 3, 12], | |
| [0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 4, 4, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 12, 2, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0 ], | |
| [0, 0, 0, 6, 0, 0, 10, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0, 2, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0 ], | |
| [0, 5, 6, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], | |
| [0, 4, 3, 0, 0, 0, 3, 5, 4, 6, 0, 4, 1, 6, 6, 8, 0, 0, 7, 1, 6, 2, 1, 3, 0, 4, 1, 0, 4, 0, 6, 0, 4, 8, 0, 0, 6, 2, 5, 10, 0, 0 ], | |
| [0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], | |
| [0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 12, 0, 1, 0, 0, 3, 5, 1, 6, 0, 0, 0, 0, 0, 5, 3 ], | |
| [10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 4, 0, 0, 0, 0, 0, 0, 1, 3, 0, 7, 0, 0 ], | |
| [0, 0, 0, 0, 0, 8, 0, 8, 1, 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 1, 0, 2, 0, 3, 0, 6, 8, 7, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 10, 0 ], | |
| [0, 0, 0, 4, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0 ], | |
| [1, 3, 0, 0, 7, 3, 0, 1, 0, 3, 4, 3, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 5, 0, 3, 0, 0, 6, 0, 1, 10, 0, 0, 0, 0, 0, 0 ], | |
| [0, 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0 ], | |
| [0, 6, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 12, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 7, 0, 3, 0, 0, 0, 0, 0, 2 ], | |
| [0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 4 ], | |
| [0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 4, 8, 0, 0, 0, 0, 0 ], | |
| [0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], | |
| [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], | |
| [0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0 ] | |
| ] | |
| # schulze ordering | |
| ballots = [] | |
| for voter in transpose(jury) + transpose(tele): | |
| rating = {countries[i]: rate for (i, rate) in sorted(enumerate(voter), key=lambda (i, rate): rate) if rate > 0} | |
| ballots.append({'ballot': rating}) | |
| schulze = SchulzeNPR(ballots, ballot_notation="rating").as_dict()['order'] | |
| # the ordinary ordering for 2016 | |
| esc = [x[1] for x in sorted(zip([sum(row1)+sum(row2) for (row1,row2) in zip(jury,tele)], countries), reverse=True)] | |
| print '# SchulzeNPR ESC2016 diff' | |
| for (i, (s, e)) in enumerate(zip(schulze, esc)): | |
| print '%2d. %-14s %-14s%s' % (i+1, s, e, ' *'*(s!=e)) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
output