1class Currency:
2 def __init__(self, currency_name, exchange_rate):
3 self.currency_name = currency_name
4 self.exchange_rate = exchange_rate
5
6 def __eq__(self, other):
7 return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate
8
9
10class PoliticalParty:
11 def __init__(self, party_name, motto, members = None, preferred_currency = None):
12 self.party_name = party_name
13 self._motto = motto
14 self.members = members if members is not None else []
15 self.preferred_currency = preferred_currency
16
17 @property
18 def motto(self):
19 return self._motto
20
21 def convert_currency_to_voters(self, currency_amount, currency):
22 voters = currency_amount / currency.exchange_rate
23 if self.preferred_currency is not None and self.preferred_currency == currency:
24 voters *= 2
25 return int(voters)
26
27 def __str__(self):
28 return self.party_name
29
30 def __add__(self, other):
31 if isinstance(other, PoliticalParty):
32 return Coalition(self, other)
33 return None
34
35
36class Coalition:
37 def __init__(self, *parties):
38 self.parties = parties
39
40 @property
41 def members(self):
42 result = {}
43 for party in self.parties:
44 result[party.party_name] = party.members
45 return result
46
47 def __add__(self, other):
48 if isinstance(other, PoliticalParty):
49 return Coalition(*self.parties, other)
50
51 if isinstance(other, Coalition):
52 return Coalition(*self.parties, *other.parties)
53 return None
54
55 def __str__(self):
56 return "-".join(map(str, self.parties))
57
58
59class Elections:
60
61 _elections_by_year = {}
62
63 def __init__(self, year):
64 self.year = year
65 self._registered_parties = {}
66 Elections._elections_by_year[year] = self
67
68 def register_party_or_coalition(self, registered_party):
69 self._registered_parties[str(registered_party)] = 0
70
71 def vote(self, registered_party):
72 self._registered_parties[str(registered_party)] += 1
73
74 def rig_elections(self, registered_party, amount, currency):
75 if isinstance(registered_party, PoliticalParty):
76 votes = registered_party.convert_currency_to_voters(amount, currency)
77 self._registered_parties[str(registered_party)] += votes
78 elif isinstance(registered_party, Coalition):
79 max_votes = 0
80 for party in registered_party.parties:
81 votes = party.convert_currency_to_voters(amount, currency)
82 if votes > max_votes:
83 max_votes = votes
84 self._registered_parties[str(registered_party)] += max_votes
85
86 def get_results(self):
87 return self._registered_parties
88
89 @classmethod
90 def get_results_by_year(cls, year):
91 if year in cls._elections_by_year:
92 return cls._elections_by_year[year].get_results()
93 return {}
.....................
----------------------------------------------------------------------
Ran 21 tests in 0.001s
OK
| f | 1 | class Currency: | f | 1 | class Currency: |
| 2 | def __init__(self, currency_name, exchange_rate): | 2 | def __init__(self, currency_name, exchange_rate): | ||
| 3 | self.currency_name = currency_name | 3 | self.currency_name = currency_name | ||
| 4 | self.exchange_rate = exchange_rate | 4 | self.exchange_rate = exchange_rate | ||
| 5 | 5 | ||||
| 6 | def __eq__(self, other): | 6 | def __eq__(self, other): | ||
| 7 | return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate | 7 | return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate | ||
| 8 | 8 | ||||
| 9 | 9 | ||||
| 10 | class PoliticalParty: | 10 | class PoliticalParty: | ||
| 11 | def __init__(self, party_name, motto, members = None, preferred_currency = None): | 11 | def __init__(self, party_name, motto, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 12 | self.party_name = party_name | ||
| 13 | self._motto = motto | 13 | self._motto = motto | ||
| 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._motto | 19 | return self._motto | ||
| 20 | 20 | ||||
| 21 | def convert_currency_to_voters(self, currency_amount, currency): | 21 | def convert_currency_to_voters(self, currency_amount, currency): | ||
| 22 | voters = currency_amount / currency.exchange_rate | 22 | voters = currency_amount / currency.exchange_rate | ||
| t | 23 | if self.preferred_currency is not None and self.preferred_currency == currency: | t | 23 | if self.preferred_currency is not None and self.preferred_currency == currency: |
| 24 | voters *= 2 | 24 | voters *= 2 | ||
| 25 | return int(voters) | 25 | return int(voters) | ||
| 26 | 26 | ||||
| 27 | def __str__(self): | 27 | def __str__(self): | ||
| 28 | return self.party_name | 28 | return self.party_name | ||
| 29 | 29 | ||||
| 30 | def __add__(self, other): | 30 | def __add__(self, other): | ||
| 31 | if isinstance(other, PoliticalParty): | 31 | if isinstance(other, PoliticalParty): | ||
| 32 | return Coalition(self, other) | 32 | return Coalition(self, other) | ||
| 33 | return None | 33 | return None | ||
| 34 | 34 | ||||
| 35 | 35 | ||||
| 36 | class Coalition: | 36 | class Coalition: | ||
| 37 | def __init__(self, *parties): | 37 | def __init__(self, *parties): | ||
| 38 | self.parties = parties | 38 | self.parties = parties | ||
| 39 | 39 | ||||
| 40 | @property | 40 | @property | ||
| 41 | def members(self): | 41 | def members(self): | ||
| 42 | result = {} | 42 | result = {} | ||
| 43 | for party in self.parties: | 43 | for party in self.parties: | ||
| 44 | result[party.party_name] = party.members | 44 | result[party.party_name] = party.members | ||
| 45 | return result | 45 | return result | ||
| 46 | 46 | ||||
| 47 | def __add__(self, other): | 47 | def __add__(self, other): | ||
| 48 | if isinstance(other, PoliticalParty): | 48 | if isinstance(other, PoliticalParty): | ||
| 49 | return Coalition(*self.parties, other) | 49 | return Coalition(*self.parties, other) | ||
| 50 | 50 | ||||
| 51 | if isinstance(other, Coalition): | 51 | if isinstance(other, Coalition): | ||
| 52 | return Coalition(*self.parties, *other.parties) | 52 | return Coalition(*self.parties, *other.parties) | ||
| 53 | return None | 53 | return None | ||
| 54 | 54 | ||||
| 55 | def __str__(self): | 55 | def __str__(self): | ||
| 56 | return "-".join(map(str, self.parties)) | 56 | return "-".join(map(str, self.parties)) | ||
| 57 | 57 | ||||
| 58 | 58 | ||||
| 59 | class Elections: | 59 | class Elections: | ||
| 60 | 60 | ||||
| 61 | _elections_by_year = {} | 61 | _elections_by_year = {} | ||
| 62 | 62 | ||||
| 63 | def __init__(self, year): | 63 | def __init__(self, year): | ||
| 64 | self.year = year | 64 | self.year = year | ||
| 65 | self._registered_parties = {} | 65 | self._registered_parties = {} | ||
| 66 | Elections._elections_by_year[year] = self | 66 | Elections._elections_by_year[year] = self | ||
| 67 | 67 | ||||
| 68 | def register_party_or_coalition(self, registered_party): | 68 | def register_party_or_coalition(self, registered_party): | ||
| 69 | self._registered_parties[str(registered_party)] = 0 | 69 | self._registered_parties[str(registered_party)] = 0 | ||
| 70 | 70 | ||||
| 71 | def vote(self, registered_party): | 71 | def vote(self, registered_party): | ||
| 72 | self._registered_parties[str(registered_party)] += 1 | 72 | self._registered_parties[str(registered_party)] += 1 | ||
| 73 | 73 | ||||
| 74 | def rig_elections(self, registered_party, amount, currency): | 74 | def rig_elections(self, registered_party, amount, currency): | ||
| 75 | if isinstance(registered_party, PoliticalParty): | 75 | if isinstance(registered_party, PoliticalParty): | ||
| 76 | votes = registered_party.convert_currency_to_voters(amount, currency) | 76 | votes = registered_party.convert_currency_to_voters(amount, currency) | ||
| 77 | self._registered_parties[str(registered_party)] += votes | 77 | self._registered_parties[str(registered_party)] += votes | ||
| 78 | elif isinstance(registered_party, Coalition): | 78 | elif isinstance(registered_party, Coalition): | ||
| 79 | max_votes = 0 | 79 | max_votes = 0 | ||
| 80 | for party in registered_party.parties: | 80 | for party in registered_party.parties: | ||
| 81 | votes = party.convert_currency_to_voters(amount, currency) | 81 | votes = party.convert_currency_to_voters(amount, currency) | ||
| 82 | if votes > max_votes: | 82 | if votes > max_votes: | ||
| 83 | max_votes = votes | 83 | max_votes = votes | ||
| 84 | self._registered_parties[str(registered_party)] += max_votes | 84 | self._registered_parties[str(registered_party)] += max_votes | ||
| 85 | 85 | ||||
| 86 | def get_results(self): | 86 | def get_results(self): | ||
| 87 | return self._registered_parties | 87 | return self._registered_parties | ||
| 88 | 88 | ||||
| 89 | @classmethod | 89 | @classmethod | ||
| 90 | def get_results_by_year(cls, year): | 90 | def get_results_by_year(cls, year): | ||
| 91 | if year in cls._elections_by_year: | 91 | if year in cls._elections_by_year: | ||
| 92 | return cls._elections_by_year[year].get_results() | 92 | return cls._elections_by_year[year].get_results() | ||
| 93 | return {} | 93 | return {} |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
| f | 1 | class Currency: | f | 1 | class Currency: |
| 2 | def __init__(self, currency_name, exchange_rate): | 2 | def __init__(self, currency_name, exchange_rate): | ||
| 3 | self.currency_name = currency_name | 3 | self.currency_name = currency_name | ||
| 4 | self.exchange_rate = exchange_rate | 4 | self.exchange_rate = exchange_rate | ||
| 5 | 5 | ||||
| 6 | def __eq__(self, other): | 6 | def __eq__(self, other): | ||
| 7 | return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate | 7 | return self.currency_name == other.currency_name and self.exchange_rate == other.exchange_rate | ||
| 8 | 8 | ||||
| 9 | 9 | ||||
| 10 | class PoliticalParty: | 10 | class PoliticalParty: | ||
| 11 | def __init__(self, party_name, motto, members = None, preferred_currency = None): | 11 | def __init__(self, party_name, motto, members = None, preferred_currency = None): | ||
| 12 | self.party_name = party_name | 12 | self.party_name = party_name | ||
| 13 | self._motto = motto | 13 | self._motto = motto | ||
| 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._motto | 19 | return self._motto | ||
| 20 | 20 | ||||
| 21 | def convert_currency_to_voters(self, currency_amount, currency): | 21 | def convert_currency_to_voters(self, currency_amount, currency): | ||
| 22 | voters = currency_amount / currency.exchange_rate | 22 | voters = currency_amount / currency.exchange_rate | ||
| n | 23 | if self.preferred_currency is not None: | n | 23 | if self.preferred_currency is not None and self.preferred_currency == currency: |
| 24 | voters *= 2 | 24 | voters *= 2 | ||
| 25 | return int(voters) | 25 | return int(voters) | ||
| 26 | 26 | ||||
| 27 | def __str__(self): | 27 | def __str__(self): | ||
| 28 | return self.party_name | 28 | return self.party_name | ||
| 29 | 29 | ||||
| 30 | def __add__(self, other): | 30 | def __add__(self, other): | ||
| 31 | if isinstance(other, PoliticalParty): | 31 | if isinstance(other, PoliticalParty): | ||
| 32 | return Coalition(self, other) | 32 | return Coalition(self, other) | ||
| 33 | return None | 33 | return None | ||
| 34 | 34 | ||||
| 35 | 35 | ||||
| 36 | class Coalition: | 36 | class Coalition: | ||
| 37 | def __init__(self, *parties): | 37 | def __init__(self, *parties): | ||
| 38 | self.parties = parties | 38 | self.parties = parties | ||
| 39 | 39 | ||||
| 40 | @property | 40 | @property | ||
| 41 | def members(self): | 41 | def members(self): | ||
| 42 | result = {} | 42 | result = {} | ||
| 43 | for party in self.parties: | 43 | for party in self.parties: | ||
| 44 | result[party.party_name] = party.members | 44 | result[party.party_name] = party.members | ||
| 45 | return result | 45 | return result | ||
| 46 | 46 | ||||
| 47 | def __add__(self, other): | 47 | def __add__(self, other): | ||
| 48 | if isinstance(other, PoliticalParty): | 48 | if isinstance(other, PoliticalParty): | ||
| 49 | return Coalition(*self.parties, other) | 49 | return Coalition(*self.parties, other) | ||
| 50 | 50 | ||||
| 51 | if isinstance(other, Coalition): | 51 | if isinstance(other, Coalition): | ||
| 52 | return Coalition(*self.parties, *other.parties) | 52 | return Coalition(*self.parties, *other.parties) | ||
| 53 | return None | 53 | return None | ||
| 54 | 54 | ||||
| 55 | def __str__(self): | 55 | def __str__(self): | ||
| 56 | return "-".join(map(str, self.parties)) | 56 | return "-".join(map(str, self.parties)) | ||
| 57 | 57 | ||||
| 58 | 58 | ||||
| 59 | class Elections: | 59 | class Elections: | ||
| 60 | 60 | ||||
| 61 | _elections_by_year = {} | 61 | _elections_by_year = {} | ||
| 62 | 62 | ||||
| 63 | def __init__(self, year): | 63 | def __init__(self, year): | ||
| 64 | self.year = year | 64 | self.year = year | ||
| 65 | self._registered_parties = {} | 65 | self._registered_parties = {} | ||
| 66 | Elections._elections_by_year[year] = self | 66 | Elections._elections_by_year[year] = self | ||
| 67 | 67 | ||||
| 68 | def register_party_or_coalition(self, registered_party): | 68 | def register_party_or_coalition(self, registered_party): | ||
| 69 | self._registered_parties[str(registered_party)] = 0 | 69 | self._registered_parties[str(registered_party)] = 0 | ||
| 70 | 70 | ||||
| 71 | def vote(self, registered_party): | 71 | def vote(self, registered_party): | ||
| 72 | self._registered_parties[str(registered_party)] += 1 | 72 | self._registered_parties[str(registered_party)] += 1 | ||
| 73 | 73 | ||||
| 74 | def rig_elections(self, registered_party, amount, currency): | 74 | def rig_elections(self, registered_party, amount, currency): | ||
| 75 | if isinstance(registered_party, PoliticalParty): | 75 | if isinstance(registered_party, PoliticalParty): | ||
| 76 | votes = registered_party.convert_currency_to_voters(amount, currency) | 76 | votes = registered_party.convert_currency_to_voters(amount, currency) | ||
| 77 | self._registered_parties[str(registered_party)] += votes | 77 | self._registered_parties[str(registered_party)] += votes | ||
| 78 | elif isinstance(registered_party, Coalition): | 78 | elif isinstance(registered_party, Coalition): | ||
| n | n | 79 | max_votes = 0 | ||
| 79 | for party in registered_party.parties: | 80 | for party in registered_party.parties: | ||
| 80 | votes = party.convert_currency_to_voters(amount, currency) | 81 | votes = party.convert_currency_to_voters(amount, currency) | ||
| n | n | 82 | if votes > max_votes: | ||
| 83 | max_votes = votes | ||||
| 81 | self._registered_parties[str(registered_party)] += votes | 84 | self._registered_parties[str(registered_party)] += max_votes | ||
| 82 | 85 | ||||
| 83 | def get_results(self): | 86 | def get_results(self): | ||
| 84 | return self._registered_parties | 87 | return self._registered_parties | ||
| 85 | 88 | ||||
| 86 | @classmethod | 89 | @classmethod | ||
| 87 | def get_results_by_year(cls, year): | 90 | def get_results_by_year(cls, year): | ||
| 88 | if year in cls._elections_by_year: | 91 | if year in cls._elections_by_year: | ||
| 89 | return cls._elections_by_year[year].get_results() | 92 | return cls._elections_by_year[year].get_results() | ||
| t | 90 | return f"Някакви други резултати, защото са за {year}" | t | 93 | return {} |
| Legends | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
| |||||||||
25.03.2026 11:38
25.03.2026 11:39