1class Currency:
2
3 def __init__(self, name, rate):
4 self.name = name
5 self.rate = rate
6
7 def __eq__(self, other):
8 return self.name == other.name and self.rate == other.rate
9
10
11class PoliticalParty:
12
13 def __init__(self, party_name, party_slogan, members = None, preferred_currency = None):
14 self.party_name = party_name
15 self.party_slogan = party_slogan
16 self.members = members if members is not None else []
17 self.preferred_currency = preferred_currency
18
19 @property
20 def motto(self):
21 return self.party_slogan
22
23 def convert_currency_to_voters(self, people, currency):
24 return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
25
26 def __str__(self):
27 return self.party_name
28
29 def __add__(self, other):
30 return Coalition(self,other)
31
32
33class Coalition:
34
35 def __init__(self, *args):
36 self.members={}
37 self.parties = {}
38
39 for political_party in args:
40 if not political_party.members:
41 self.members[political_party.party_name] = []
42 else:
43 self.members[political_party.party_name] = political_party.members
44 self.parties[political_party.party_name] = political_party
45
46 def __add__(self, other):
47 new_coalition = Coalition()
48 new_coalition.members = dict(self.members)
49 new_coalition.parties = dict(self.parties)
50
51 if type(other) is PoliticalParty:
52 new_coalition.members[other.party_name] = list(other.members) if other.members != [] else []
53 new_coalition.parties[other.party_name] = other
54 else:
55 new_coalition.members.update(other.members)
56 new_coalition.parties.update(other.parties)
57 return new_coalition
58
59 def __str__(self):
60 return "-".join(member for member in self.members)
61
62
63class Elections:
64
65 objects = {}
66
67 def __init__(self, year):
68 self.year = year
69 self.participating = {}
70 self.party = {}
71
72 def register_party_or_coalition(self, object):
73 if type(object) is PoliticalParty:
74 self.participating[object.party_name] = 0
75 self.party[object.party_name] = object
76
77 else:
78 self.participating[str(object)] = 0
79 for party_name in object.members:
80 self.party[party_name] = object.parties[party_name]
81
82
83 def vote(self,object):
84 if type(object) is PoliticalParty:
85 self.participating[object.party_name] += 1
86 else:
87 self.participating[str(object)] += 1
88
89
90 def rig_elections(self, object, total, currency):
91 if type(object) is PoliticalParty:
92 value = object.convert_currency_to_voters(total, currency)
93 self.participating[object.party_name] += value
94 else:
95 value = 0
96 for party_name in object.members:
97 current = self.party[party_name].convert_currency_to_voters(total, currency)
98 if current > value:
99 value = current
100 self.participating[str(object)] += value
101 Elections.objects[self.year] = self.get_results()
102
103 def get_results(self):
104 to_return={}
105 for party_or_coalition in self.participating:
106 to_return[party_or_coalition] = self.participating[party_or_coalition]
107
108 return to_return
109
110 @classmethod
111 def get_results_by_year(cls, year):
112 return cls.objects[year] if year in cls.objects else None
........F.EE.EEE.....
======================================================================
ERROR: test_rig_elections (test.TestElections.test_rig_elections)
rig_elections should add as many bought votes as possible to the result.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 157, in test_rig_elections
self.elections_2026.rig_elections(self.party, 50, self.currency)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 92, in rig_elections
value = object.convert_currency_to_voters(total, currency)
File "/tmp/solution.py", line 24, in convert_currency_to_voters
return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 8, in __eq__
return self.name == other.name and self.rate == other.rate
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
ERROR: test_rig_elections_preferred_currency (test.TestElections.test_rig_elections_preferred_currency)
rig_elections should use the most effective preferred currency conversion in a coalition.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 163, in test_rig_elections_preferred_currency
self.elections_2026.rig_elections(self.coalition, 80, self.currency)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 97, in rig_elections
current = self.party[party_name].convert_currency_to_voters(total, currency)
File "/tmp/solution.py", line 24, in convert_currency_to_voters
return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 8, in __eq__
return self.name == other.name and self.rate == other.rate
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
ERROR: test_convert_currency_to_voters (test.TestPoliticalParty.test_convert_currency_to_voters)
convert_currency_to_voters should return normal or double voters depending on the preferred currency.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 42, in test_convert_currency_to_voters
self.assertEqual(4, self.party.convert_currency_to_voters(34, self.currency))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 24, in convert_currency_to_voters
return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 8, in __eq__
return self.name == other.name and self.rate == other.rate
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
ERROR: test_convert_currency_to_voters_floating_point_edge_case (test.TestPoliticalParty.test_convert_currency_to_voters_floating_point_edge_case)
convert_currency_to_voters should properly account for floating point edge cases (e.g. 0.200001 errors).
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 55, in test_convert_currency_to_voters_floating_point_edge_case
self.assertEqual(5, party.convert_currency_to_voters(2, currency))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/tmp/solution.py", line 24, in convert_currency_to_voters
return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 8, in __eq__
return self.name == other.name and self.rate == other.rate
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
ERROR: test_convert_currency_to_voters_rounding (test.TestPoliticalParty.test_convert_currency_to_voters_rounding)
convert_currency_to_voters should round the number of voters down.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 49, in test_convert_currency_to_voters_rounding
self.assertEqual(4, self.party.convert_currency_to_voters(34.5, self.currency))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 24, in convert_currency_to_voters
return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/solution.py", line 8, in __eq__
return self.name == other.name and self.rate == other.rate
^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
======================================================================
FAIL: test_get_results_by_year (test.TestElections.test_get_results_by_year)
get_results_by_year should return the results for the given election year.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 171, in test_get_results_by_year
self.assertEqual({"Party 1": 1}, Elections.get_results_by_year(2026))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: {'Party 1': 1} != None
----------------------------------------------------------------------
Ran 21 tests in 0.003s
FAILED (failures=1, errors=5)
| f | 1 | class Currency: | f | 1 | class Currency: |
| n | n | 2 | |||
| 2 | def __init__(self, name, rate): | 3 | def __init__(self, name, rate): | ||
| 3 | self.name = name | 4 | self.name = name | ||
| 4 | self.rate = rate | 5 | self.rate = rate | ||
| 5 | 6 | ||||
| 6 | def __eq__(self, other): | 7 | def __eq__(self, other): | ||
| 7 | return self.name == other.name and self.rate == other.rate | 8 | return self.name == other.name and self.rate == other.rate | ||
| 8 | 9 | ||||
| 9 | 10 | ||||
| 10 | class PoliticalParty: | 11 | class PoliticalParty: | ||
| n | n | 12 | |||
| 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | 13 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 14 | self.party_name = party_name | ||
| 13 | self.party_slogan = party_slogan | 15 | self.party_slogan = party_slogan | ||
| 14 | self.members = members if members is not None else [] | 16 | self.members = members if members is not None else [] | ||
| 15 | self.preferred_currency = preferred_currency | 17 | self.preferred_currency = preferred_currency | ||
| 16 | 18 | ||||
| 17 | @property | 19 | @property | ||
| 18 | def motto(self): | 20 | def motto(self): | ||
| 19 | return self.party_slogan | 21 | return self.party_slogan | ||
| 20 | 22 | ||||
| 21 | def convert_currency_to_voters(self, people, currency): | 23 | def convert_currency_to_voters(self, people, currency): | ||
| 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | 24 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | ||
| 23 | 25 | ||||
| 24 | def __str__(self): | 26 | def __str__(self): | ||
| 25 | return self.party_name | 27 | return self.party_name | ||
| 26 | 28 | ||||
| 27 | def __add__(self, other): | 29 | def __add__(self, other): | ||
| 28 | return Coalition(self,other) | 30 | return Coalition(self,other) | ||
| 29 | 31 | ||||
| n | n | 32 | |||
| 30 | class Coalition: | 33 | class Coalition: | ||
| n | n | 34 | |||
| 31 | def __init__(self, *args): | 35 | def __init__(self, *args): | ||
| 32 | self.members={} | 36 | self.members={} | ||
| 33 | self.parties = {} | 37 | self.parties = {} | ||
| 34 | 38 | ||||
| 35 | for political_party in args: | 39 | for political_party in args: | ||
| 36 | if not political_party.members: | 40 | if not political_party.members: | ||
| 37 | self.members[political_party.party_name] = [] | 41 | self.members[political_party.party_name] = [] | ||
| 38 | else: | 42 | else: | ||
| 39 | self.members[political_party.party_name] = political_party.members | 43 | self.members[political_party.party_name] = political_party.members | ||
| 40 | self.parties[political_party.party_name] = political_party | 44 | self.parties[political_party.party_name] = political_party | ||
| 41 | 45 | ||||
| 42 | def __add__(self, other): | 46 | def __add__(self, other): | ||
| 43 | new_coalition = Coalition() | 47 | new_coalition = Coalition() | ||
| 44 | new_coalition.members = dict(self.members) | 48 | new_coalition.members = dict(self.members) | ||
| 45 | new_coalition.parties = dict(self.parties) | 49 | new_coalition.parties = dict(self.parties) | ||
| 46 | 50 | ||||
| 47 | if type(other) is PoliticalParty: | 51 | if type(other) is PoliticalParty: | ||
| 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | 52 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | ||
| 49 | new_coalition.parties[other.party_name] = other | 53 | new_coalition.parties[other.party_name] = other | ||
| 50 | else: | 54 | else: | ||
| 51 | new_coalition.members.update(other.members) | 55 | new_coalition.members.update(other.members) | ||
| 52 | new_coalition.parties.update(other.parties) | 56 | new_coalition.parties.update(other.parties) | ||
| 53 | return new_coalition | 57 | return new_coalition | ||
| 54 | 58 | ||||
| 55 | def __str__(self): | 59 | def __str__(self): | ||
| 56 | return "-".join(member for member in self.members) | 60 | return "-".join(member for member in self.members) | ||
| 57 | 61 | ||||
| n | n | 62 | |||
| 58 | class Elections: | 63 | class Elections: | ||
| t | t | 64 | |||
| 59 | objects = {} | 65 | objects = {} | ||
| 60 | 66 | ||||
| 61 | def __init__(self, year): | 67 | def __init__(self, year): | ||
| 62 | self.year = year | 68 | self.year = year | ||
| 63 | self.participating = {} | 69 | self.participating = {} | ||
| 64 | self.party = {} | 70 | self.party = {} | ||
| 65 | 71 | ||||
| 66 | def register_party_or_coalition(self, object): | 72 | def register_party_or_coalition(self, object): | ||
| 67 | if type(object) is PoliticalParty: | 73 | if type(object) is PoliticalParty: | ||
| 68 | self.participating[object.party_name] = 0 | 74 | self.participating[object.party_name] = 0 | ||
| 69 | self.party[object.party_name] = object | 75 | self.party[object.party_name] = object | ||
| 70 | 76 | ||||
| 71 | else: | 77 | else: | ||
| 72 | self.participating[str(object)] = 0 | 78 | self.participating[str(object)] = 0 | ||
| 73 | for party_name in object.members: | 79 | for party_name in object.members: | ||
| 74 | self.party[party_name] = object.parties[party_name] | 80 | self.party[party_name] = object.parties[party_name] | ||
| 75 | 81 | ||||
| 76 | 82 | ||||
| 77 | def vote(self,object): | 83 | def vote(self,object): | ||
| 78 | if type(object) is PoliticalParty: | 84 | if type(object) is PoliticalParty: | ||
| 79 | self.participating[object.party_name] += 1 | 85 | self.participating[object.party_name] += 1 | ||
| 80 | else: | 86 | else: | ||
| 81 | self.participating[str(object)] += 1 | 87 | self.participating[str(object)] += 1 | ||
| 82 | 88 | ||||
| 83 | 89 | ||||
| 84 | def rig_elections(self, object, total, currency): | 90 | def rig_elections(self, object, total, currency): | ||
| 85 | if type(object) is PoliticalParty: | 91 | if type(object) is PoliticalParty: | ||
| 86 | value = object.convert_currency_to_voters(total, currency) | 92 | value = object.convert_currency_to_voters(total, currency) | ||
| 87 | self.participating[object.party_name] += value | 93 | self.participating[object.party_name] += value | ||
| 88 | else: | 94 | else: | ||
| 89 | value = 0 | 95 | value = 0 | ||
| 90 | for party_name in object.members: | 96 | for party_name in object.members: | ||
| 91 | current = self.party[party_name].convert_currency_to_voters(total, currency) | 97 | current = self.party[party_name].convert_currency_to_voters(total, currency) | ||
| 92 | if current > value: | 98 | if current > value: | ||
| 93 | value = current | 99 | value = current | ||
| 94 | self.participating[str(object)] += value | 100 | self.participating[str(object)] += value | ||
| 95 | Elections.objects[self.year] = self.get_results() | 101 | Elections.objects[self.year] = self.get_results() | ||
| 96 | 102 | ||||
| 97 | def get_results(self): | 103 | def get_results(self): | ||
| 98 | to_return={} | 104 | to_return={} | ||
| 99 | for party_or_coalition in self.participating: | 105 | for party_or_coalition in self.participating: | ||
| 100 | to_return[party_or_coalition] = self.participating[party_or_coalition] | 106 | to_return[party_or_coalition] = self.participating[party_or_coalition] | ||
| 101 | 107 | ||||
| 102 | return to_return | 108 | return to_return | ||
| 103 | 109 | ||||
| 104 | @classmethod | 110 | @classmethod | ||
| 105 | def get_results_by_year(cls, year): | 111 | def get_results_by_year(cls, year): | ||
| 106 | return cls.objects[year] if year in cls.objects else None | 112 | return cls.objects[year] if year in cls.objects else None |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
| f | 1 | class Currency: | f | 1 | class Currency: |
| 2 | def __init__(self, name, rate): | 2 | def __init__(self, name, rate): | ||
| 3 | self.name = name | 3 | self.name = name | ||
| 4 | self.rate = rate | 4 | self.rate = rate | ||
| 5 | 5 | ||||
| 6 | def __eq__(self, other): | 6 | def __eq__(self, other): | ||
| 7 | return self.name == other.name and self.rate == other.rate | 7 | return self.name == other.name and self.rate == other.rate | ||
| 8 | 8 | ||||
| 9 | 9 | ||||
| 10 | class PoliticalParty: | 10 | class PoliticalParty: | ||
| 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 12 | self.party_name = party_name | ||
| 13 | self.party_slogan = party_slogan | 13 | self.party_slogan = party_slogan | ||
| 14 | self.members = members if members is not None else [] | 14 | self.members = members if members is not None else [] | ||
| 15 | self.preferred_currency = preferred_currency | 15 | self.preferred_currency = preferred_currency | ||
| 16 | 16 | ||||
| 17 | @property | 17 | @property | ||
| 18 | def motto(self): | 18 | def motto(self): | ||
| 19 | return self.party_slogan | 19 | return self.party_slogan | ||
| 20 | 20 | ||||
| 21 | def convert_currency_to_voters(self, people, currency): | 21 | def convert_currency_to_voters(self, people, currency): | ||
| 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | ||
| 23 | 23 | ||||
| 24 | def __str__(self): | 24 | def __str__(self): | ||
| 25 | return self.party_name | 25 | return self.party_name | ||
| 26 | 26 | ||||
| 27 | def __add__(self, other): | 27 | def __add__(self, other): | ||
| 28 | return Coalition(self,other) | 28 | return Coalition(self,other) | ||
| 29 | 29 | ||||
| 30 | class Coalition: | 30 | class Coalition: | ||
| 31 | def __init__(self, *args): | 31 | def __init__(self, *args): | ||
| 32 | self.members={} | 32 | self.members={} | ||
| 33 | self.parties = {} | 33 | self.parties = {} | ||
| 34 | 34 | ||||
| 35 | for political_party in args: | 35 | for political_party in args: | ||
| 36 | if not political_party.members: | 36 | if not political_party.members: | ||
| 37 | self.members[political_party.party_name] = [] | 37 | self.members[political_party.party_name] = [] | ||
| 38 | else: | 38 | else: | ||
| 39 | self.members[political_party.party_name] = political_party.members | 39 | self.members[political_party.party_name] = political_party.members | ||
| 40 | self.parties[political_party.party_name] = political_party | 40 | self.parties[political_party.party_name] = political_party | ||
| 41 | 41 | ||||
| 42 | def __add__(self, other): | 42 | def __add__(self, other): | ||
| 43 | new_coalition = Coalition() | 43 | new_coalition = Coalition() | ||
| 44 | new_coalition.members = dict(self.members) | 44 | new_coalition.members = dict(self.members) | ||
| 45 | new_coalition.parties = dict(self.parties) | 45 | new_coalition.parties = dict(self.parties) | ||
| 46 | 46 | ||||
| 47 | if type(other) is PoliticalParty: | 47 | if type(other) is PoliticalParty: | ||
| 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | ||
| 49 | new_coalition.parties[other.party_name] = other | 49 | new_coalition.parties[other.party_name] = other | ||
| 50 | else: | 50 | else: | ||
| 51 | new_coalition.members.update(other.members) | 51 | new_coalition.members.update(other.members) | ||
| 52 | new_coalition.parties.update(other.parties) | 52 | new_coalition.parties.update(other.parties) | ||
| 53 | return new_coalition | 53 | return new_coalition | ||
| 54 | 54 | ||||
| 55 | def __str__(self): | 55 | def __str__(self): | ||
| 56 | return "-".join(member for member in self.members) | 56 | return "-".join(member for member in self.members) | ||
| 57 | 57 | ||||
| 58 | class Elections: | 58 | class Elections: | ||
| 59 | objects = {} | 59 | objects = {} | ||
| 60 | 60 | ||||
| 61 | def __init__(self, year): | 61 | def __init__(self, year): | ||
| 62 | self.year = year | 62 | self.year = year | ||
| 63 | self.participating = {} | 63 | self.participating = {} | ||
| 64 | self.party = {} | 64 | self.party = {} | ||
| 65 | 65 | ||||
| 66 | def register_party_or_coalition(self, object): | 66 | def register_party_or_coalition(self, object): | ||
| 67 | if type(object) is PoliticalParty: | 67 | if type(object) is PoliticalParty: | ||
| 68 | self.participating[object.party_name] = 0 | 68 | self.participating[object.party_name] = 0 | ||
| 69 | self.party[object.party_name] = object | 69 | self.party[object.party_name] = object | ||
| 70 | 70 | ||||
| 71 | else: | 71 | else: | ||
| 72 | self.participating[str(object)] = 0 | 72 | self.participating[str(object)] = 0 | ||
| 73 | for party_name in object.members: | 73 | for party_name in object.members: | ||
| 74 | self.party[party_name] = object.parties[party_name] | 74 | self.party[party_name] = object.parties[party_name] | ||
| 75 | 75 | ||||
| 76 | 76 | ||||
| 77 | def vote(self,object): | 77 | def vote(self,object): | ||
| 78 | if type(object) is PoliticalParty: | 78 | if type(object) is PoliticalParty: | ||
| 79 | self.participating[object.party_name] += 1 | 79 | self.participating[object.party_name] += 1 | ||
| 80 | else: | 80 | else: | ||
| 81 | self.participating[str(object)] += 1 | 81 | self.participating[str(object)] += 1 | ||
| 82 | 82 | ||||
| 83 | 83 | ||||
| 84 | def rig_elections(self, object, total, currency): | 84 | def rig_elections(self, object, total, currency): | ||
| 85 | if type(object) is PoliticalParty: | 85 | if type(object) is PoliticalParty: | ||
| 86 | value = object.convert_currency_to_voters(total, currency) | 86 | value = object.convert_currency_to_voters(total, currency) | ||
| 87 | self.participating[object.party_name] += value | 87 | self.participating[object.party_name] += value | ||
| 88 | else: | 88 | else: | ||
| 89 | value = 0 | 89 | value = 0 | ||
| 90 | for party_name in object.members: | 90 | for party_name in object.members: | ||
| t | 91 | value += self.party[party_name].convert_currency_to_voters(total, currency) | t | 91 | current = self.party[party_name].convert_currency_to_voters(total, currency) |
| 92 | if current > value: | ||||
| 93 | value = current | ||||
| 92 | self.participating[str(object)] += value | 94 | self.participating[str(object)] += value | ||
| 93 | Elections.objects[self.year] = self.get_results() | 95 | Elections.objects[self.year] = self.get_results() | ||
| 94 | 96 | ||||
| 95 | def get_results(self): | 97 | def get_results(self): | ||
| 96 | to_return={} | 98 | to_return={} | ||
| 97 | for party_or_coalition in self.participating: | 99 | for party_or_coalition in self.participating: | ||
| 98 | to_return[party_or_coalition] = self.participating[party_or_coalition] | 100 | to_return[party_or_coalition] = self.participating[party_or_coalition] | ||
| 99 | 101 | ||||
| 100 | return to_return | 102 | return to_return | ||
| 101 | 103 | ||||
| 102 | @classmethod | 104 | @classmethod | ||
| 103 | def get_results_by_year(cls, year): | 105 | def get_results_by_year(cls, year): | ||
| 104 | return cls.objects[year] if year in cls.objects else None | 106 | return cls.objects[year] if year in cls.objects else None |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
| t | 1 | class Currency: | t | 1 | class Currency: |
| 2 | def __init__(self, name, rate): | 2 | def __init__(self, name, rate): | ||
| 3 | self.name = name | 3 | self.name = name | ||
| 4 | self.rate = rate | 4 | self.rate = rate | ||
| 5 | 5 | ||||
| 6 | def __eq__(self, other): | 6 | def __eq__(self, other): | ||
| 7 | return self.name == other.name and self.rate == other.rate | 7 | return self.name == other.name and self.rate == other.rate | ||
| 8 | 8 | ||||
| 9 | 9 | ||||
| 10 | class PoliticalParty: | 10 | class PoliticalParty: | ||
| 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 12 | self.party_name = party_name | ||
| 13 | self.party_slogan = party_slogan | 13 | self.party_slogan = party_slogan | ||
| 14 | self.members = members if members is not None else [] | 14 | self.members = members if members is not None else [] | ||
| 15 | self.preferred_currency = preferred_currency | 15 | self.preferred_currency = preferred_currency | ||
| 16 | 16 | ||||
| 17 | @property | 17 | @property | ||
| 18 | def motto(self): | 18 | def motto(self): | ||
| 19 | return self.party_slogan | 19 | return self.party_slogan | ||
| 20 | 20 | ||||
| 21 | def convert_currency_to_voters(self, people, currency): | 21 | def convert_currency_to_voters(self, people, currency): | ||
| 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | ||
| 23 | 23 | ||||
| 24 | def __str__(self): | 24 | def __str__(self): | ||
| 25 | return self.party_name | 25 | return self.party_name | ||
| 26 | 26 | ||||
| 27 | def __add__(self, other): | 27 | def __add__(self, other): | ||
| 28 | return Coalition(self,other) | 28 | return Coalition(self,other) | ||
| 29 | 29 | ||||
| 30 | class Coalition: | 30 | class Coalition: | ||
| 31 | def __init__(self, *args): | 31 | def __init__(self, *args): | ||
| 32 | self.members={} | 32 | self.members={} | ||
| 33 | self.parties = {} | 33 | self.parties = {} | ||
| 34 | 34 | ||||
| 35 | for political_party in args: | 35 | for political_party in args: | ||
| 36 | if not political_party.members: | 36 | if not political_party.members: | ||
| 37 | self.members[political_party.party_name] = [] | 37 | self.members[political_party.party_name] = [] | ||
| 38 | else: | 38 | else: | ||
| 39 | self.members[political_party.party_name] = political_party.members | 39 | self.members[political_party.party_name] = political_party.members | ||
| 40 | self.parties[political_party.party_name] = political_party | 40 | self.parties[political_party.party_name] = political_party | ||
| 41 | 41 | ||||
| 42 | def __add__(self, other): | 42 | def __add__(self, other): | ||
| 43 | new_coalition = Coalition() | 43 | new_coalition = Coalition() | ||
| 44 | new_coalition.members = dict(self.members) | 44 | new_coalition.members = dict(self.members) | ||
| 45 | new_coalition.parties = dict(self.parties) | 45 | new_coalition.parties = dict(self.parties) | ||
| 46 | 46 | ||||
| 47 | if type(other) is PoliticalParty: | 47 | if type(other) is PoliticalParty: | ||
| 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | ||
| 49 | new_coalition.parties[other.party_name] = other | 49 | new_coalition.parties[other.party_name] = other | ||
| 50 | else: | 50 | else: | ||
| 51 | new_coalition.members.update(other.members) | 51 | new_coalition.members.update(other.members) | ||
| 52 | new_coalition.parties.update(other.parties) | 52 | new_coalition.parties.update(other.parties) | ||
| 53 | return new_coalition | 53 | return new_coalition | ||
| 54 | 54 | ||||
| 55 | def __str__(self): | 55 | def __str__(self): | ||
| 56 | return "-".join(member for member in self.members) | 56 | return "-".join(member for member in self.members) | ||
| 57 | 57 | ||||
| 58 | class Elections: | 58 | class Elections: | ||
| 59 | objects = {} | 59 | objects = {} | ||
| 60 | 60 | ||||
| 61 | def __init__(self, year): | 61 | def __init__(self, year): | ||
| 62 | self.year = year | 62 | self.year = year | ||
| 63 | self.participating = {} | 63 | self.participating = {} | ||
| 64 | self.party = {} | 64 | self.party = {} | ||
| 65 | 65 | ||||
| 66 | def register_party_or_coalition(self, object): | 66 | def register_party_or_coalition(self, object): | ||
| 67 | if type(object) is PoliticalParty: | 67 | if type(object) is PoliticalParty: | ||
| 68 | self.participating[object.party_name] = 0 | 68 | self.participating[object.party_name] = 0 | ||
| 69 | self.party[object.party_name] = object | 69 | self.party[object.party_name] = object | ||
| 70 | 70 | ||||
| 71 | else: | 71 | else: | ||
| 72 | self.participating[str(object)] = 0 | 72 | self.participating[str(object)] = 0 | ||
| 73 | for party_name in object.members: | 73 | for party_name in object.members: | ||
| 74 | self.party[party_name] = object.parties[party_name] | 74 | self.party[party_name] = object.parties[party_name] | ||
| 75 | 75 | ||||
| 76 | 76 | ||||
| 77 | def vote(self,object): | 77 | def vote(self,object): | ||
| 78 | if type(object) is PoliticalParty: | 78 | if type(object) is PoliticalParty: | ||
| 79 | self.participating[object.party_name] += 1 | 79 | self.participating[object.party_name] += 1 | ||
| 80 | else: | 80 | else: | ||
| 81 | self.participating[str(object)] += 1 | 81 | self.participating[str(object)] += 1 | ||
| 82 | 82 | ||||
| 83 | 83 | ||||
| 84 | def rig_elections(self, object, total, currency): | 84 | def rig_elections(self, object, total, currency): | ||
| 85 | if type(object) is PoliticalParty: | 85 | if type(object) is PoliticalParty: | ||
| 86 | value = object.convert_currency_to_voters(total, currency) | 86 | value = object.convert_currency_to_voters(total, currency) | ||
| 87 | self.participating[object.party_name] += value | 87 | self.participating[object.party_name] += value | ||
| 88 | else: | 88 | else: | ||
| 89 | value = 0 | 89 | value = 0 | ||
| 90 | for party_name in object.members: | 90 | for party_name in object.members: | ||
| 91 | value += self.party[party_name].convert_currency_to_voters(total, currency) | 91 | value += self.party[party_name].convert_currency_to_voters(total, currency) | ||
| 92 | self.participating[str(object)] += value | 92 | self.participating[str(object)] += value | ||
| 93 | Elections.objects[self.year] = self.get_results() | 93 | Elections.objects[self.year] = self.get_results() | ||
| 94 | 94 | ||||
| 95 | def get_results(self): | 95 | def get_results(self): | ||
| 96 | to_return={} | 96 | to_return={} | ||
| 97 | for party_or_coalition in self.participating: | 97 | for party_or_coalition in self.participating: | ||
| 98 | to_return[party_or_coalition] = self.participating[party_or_coalition] | 98 | to_return[party_or_coalition] = self.participating[party_or_coalition] | ||
| 99 | 99 | ||||
| 100 | return to_return | 100 | return to_return | ||
| 101 | 101 | ||||
| 102 | @classmethod | 102 | @classmethod | ||
| 103 | def get_results_by_year(cls, year): | 103 | def get_results_by_year(cls, year): | ||
| 104 | return cls.objects[year] if year in cls.objects else None | 104 | return cls.objects[year] if year in cls.objects else None |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
| f | 1 | class Currency: | f | 1 | class Currency: |
| 2 | def __init__(self, name, rate): | 2 | def __init__(self, name, rate): | ||
| 3 | self.name = name | 3 | self.name = name | ||
| 4 | self.rate = rate | 4 | self.rate = rate | ||
| 5 | 5 | ||||
| 6 | def __eq__(self, other): | 6 | def __eq__(self, other): | ||
| 7 | return self.name == other.name and self.rate == other.rate | 7 | return self.name == other.name and self.rate == other.rate | ||
| 8 | 8 | ||||
| 9 | 9 | ||||
| 10 | class PoliticalParty: | 10 | class PoliticalParty: | ||
| 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | 11 | def __init__(self, party_name, party_slogan, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 12 | self.party_name = party_name | ||
| 13 | self.party_slogan = party_slogan | 13 | self.party_slogan = party_slogan | ||
| 14 | self.members = members if members is not None else [] | 14 | self.members = members if members is not None else [] | ||
| 15 | self.preferred_currency = preferred_currency | 15 | self.preferred_currency = preferred_currency | ||
| 16 | 16 | ||||
| 17 | @property | 17 | @property | ||
| 18 | def motto(self): | 18 | def motto(self): | ||
| 19 | return self.party_slogan | 19 | return self.party_slogan | ||
| 20 | 20 | ||||
| 21 | def convert_currency_to_voters(self, people, currency): | 21 | def convert_currency_to_voters(self, people, currency): | ||
| 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | 22 | return (people // currency.rate) * 2 if self.preferred_currency == currency else people // currency.rate | ||
| 23 | 23 | ||||
| 24 | def __str__(self): | 24 | def __str__(self): | ||
| 25 | return self.party_name | 25 | return self.party_name | ||
| 26 | 26 | ||||
| 27 | def __add__(self, other): | 27 | def __add__(self, other): | ||
| 28 | return Coalition(self,other) | 28 | return Coalition(self,other) | ||
| 29 | 29 | ||||
| 30 | class Coalition: | 30 | class Coalition: | ||
| 31 | def __init__(self, *args): | 31 | def __init__(self, *args): | ||
| 32 | self.members={} | 32 | self.members={} | ||
| 33 | self.parties = {} | 33 | self.parties = {} | ||
| 34 | 34 | ||||
| 35 | for political_party in args: | 35 | for political_party in args: | ||
| 36 | if not political_party.members: | 36 | if not political_party.members: | ||
| 37 | self.members[political_party.party_name] = [] | 37 | self.members[political_party.party_name] = [] | ||
| 38 | else: | 38 | else: | ||
| 39 | self.members[political_party.party_name] = political_party.members | 39 | self.members[political_party.party_name] = political_party.members | ||
| 40 | self.parties[political_party.party_name] = political_party | 40 | self.parties[political_party.party_name] = political_party | ||
| 41 | 41 | ||||
| 42 | def __add__(self, other): | 42 | def __add__(self, other): | ||
| 43 | new_coalition = Coalition() | 43 | new_coalition = Coalition() | ||
| 44 | new_coalition.members = dict(self.members) | 44 | new_coalition.members = dict(self.members) | ||
| 45 | new_coalition.parties = dict(self.parties) | 45 | new_coalition.parties = dict(self.parties) | ||
| 46 | 46 | ||||
| 47 | if type(other) is PoliticalParty: | 47 | if type(other) is PoliticalParty: | ||
| 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | 48 | new_coalition.members[other.party_name] = list(other.members) if other.members != [] else [] | ||
| 49 | new_coalition.parties[other.party_name] = other | 49 | new_coalition.parties[other.party_name] = other | ||
| 50 | else: | 50 | else: | ||
| 51 | new_coalition.members.update(other.members) | 51 | new_coalition.members.update(other.members) | ||
| 52 | new_coalition.parties.update(other.parties) | 52 | new_coalition.parties.update(other.parties) | ||
| 53 | return new_coalition | 53 | return new_coalition | ||
| 54 | 54 | ||||
| 55 | def __str__(self): | 55 | def __str__(self): | ||
| 56 | return "-".join(member for member in self.members) | 56 | return "-".join(member for member in self.members) | ||
| 57 | 57 | ||||
| 58 | class Elections: | 58 | class Elections: | ||
| 59 | objects = {} | 59 | objects = {} | ||
| 60 | 60 | ||||
| 61 | def __init__(self, year): | 61 | def __init__(self, year): | ||
| 62 | self.year = year | 62 | self.year = year | ||
| 63 | self.participating = {} | 63 | self.participating = {} | ||
| 64 | self.party = {} | 64 | self.party = {} | ||
| 65 | 65 | ||||
| 66 | def register_party_or_coalition(self, object): | 66 | def register_party_or_coalition(self, object): | ||
| 67 | if type(object) is PoliticalParty: | 67 | if type(object) is PoliticalParty: | ||
| 68 | self.participating[object.party_name] = 0 | 68 | self.participating[object.party_name] = 0 | ||
| 69 | self.party[object.party_name] = object | 69 | self.party[object.party_name] = object | ||
| 70 | 70 | ||||
| 71 | else: | 71 | else: | ||
| 72 | self.participating[str(object)] = 0 | 72 | self.participating[str(object)] = 0 | ||
| 73 | for party_name in object.members: | 73 | for party_name in object.members: | ||
| 74 | self.party[party_name] = object.parties[party_name] | 74 | self.party[party_name] = object.parties[party_name] | ||
| 75 | 75 | ||||
| 76 | 76 | ||||
| 77 | def vote(self,object): | 77 | def vote(self,object): | ||
| 78 | if type(object) is PoliticalParty: | 78 | if type(object) is PoliticalParty: | ||
| 79 | self.participating[object.party_name] += 1 | 79 | self.participating[object.party_name] += 1 | ||
| 80 | else: | 80 | else: | ||
| 81 | self.participating[str(object)] += 1 | 81 | self.participating[str(object)] += 1 | ||
| 82 | 82 | ||||
| 83 | 83 | ||||
| 84 | def rig_elections(self, object, total, currency): | 84 | def rig_elections(self, object, total, currency): | ||
| 85 | if type(object) is PoliticalParty: | 85 | if type(object) is PoliticalParty: | ||
| 86 | value = object.convert_currency_to_voters(total, currency) | 86 | value = object.convert_currency_to_voters(total, currency) | ||
| 87 | self.participating[object.party_name] += value | 87 | self.participating[object.party_name] += value | ||
| 88 | else: | 88 | else: | ||
| 89 | value = 0 | 89 | value = 0 | ||
| 90 | for party_name in object.members: | 90 | for party_name in object.members: | ||
| t | 91 | value += self.participating[party_name] + self.party[party_name].convert_currency_to_voters(total, currency) | t | 91 | value += self.party[party_name].convert_currency_to_voters(total, currency) |
| 92 | self.participating[str(object)] += value | 92 | self.participating[str(object)] += value | ||
| 93 | Elections.objects[self.year] = self.get_results() | 93 | Elections.objects[self.year] = self.get_results() | ||
| 94 | 94 | ||||
| 95 | def get_results(self): | 95 | def get_results(self): | ||
| 96 | to_return={} | 96 | to_return={} | ||
| 97 | for party_or_coalition in self.participating: | 97 | for party_or_coalition in self.participating: | ||
| 98 | to_return[party_or_coalition] = self.participating[party_or_coalition] | 98 | to_return[party_or_coalition] = self.participating[party_or_coalition] | ||
| 99 | 99 | ||||
| 100 | return to_return | 100 | return to_return | ||
| 101 | 101 | ||||
| 102 | @classmethod | 102 | @classmethod | ||
| 103 | def get_results_by_year(cls, year): | 103 | def get_results_by_year(cls, year): | ||
| 104 | return cls.objects[year] if year in cls.objects else None | 104 | return cls.objects[year] if year in cls.objects else None |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
25.03.2026 13:27
25.03.2026 13:27
25.03.2026 13:32
25.03.2026 13:33
25.03.2026 13:32
25.03.2026 13:34
25.03.2026 13:35
25.03.2026 13:35