✨ Start Blizzard
This commit is contained in:
parent
b658dcead9
commit
08b4100a7e
44
Blizzard/capital-city.py
Normal file
44
Blizzard/capital-city.py
Normal file
@ -0,0 +1,44 @@
|
||||
class Capital:
|
||||
class __Singleton:
|
||||
def __init__(self, city_name):
|
||||
self.val = None
|
||||
self.city_name = city_name
|
||||
|
||||
def __str__(self):
|
||||
return repr(self) + self.val
|
||||
|
||||
def name(self):
|
||||
return self.city_name
|
||||
|
||||
instance = None
|
||||
|
||||
def __new__(cls, city_name): # _new_ est toujours une méthode de classe
|
||||
if not Capital.instance:
|
||||
Capital.instance = Capital.__Singleton(city_name)
|
||||
return Capital.instance
|
||||
|
||||
def __getattr__(self, attr):
|
||||
return getattr(self.instance, attr)
|
||||
|
||||
def __setattr__(self, attr, val):
|
||||
return setattr(self.instance, attr, val)
|
||||
|
||||
@staticmethod
|
||||
def name():
|
||||
return Capital.instance.name()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||||
|
||||
ukraine_capital_1 = Capital("Kyiv")
|
||||
ukraine_capital_2 = Capital("London")
|
||||
ukraine_capital_3 = Capital("Marocco")
|
||||
|
||||
assert ukraine_capital_2.name() == "Kyiv"
|
||||
assert ukraine_capital_3.name() == "Kyiv"
|
||||
|
||||
assert ukraine_capital_2 is ukraine_capital_1
|
||||
assert ukraine_capital_3 is ukraine_capital_1
|
||||
|
||||
print("Coding complete? Let's try tests!")
|
31
Blizzard/gcd.py
Normal file
31
Blizzard/gcd.py
Normal file
@ -0,0 +1,31 @@
|
||||
def divisorGenerator(n, maximum):
|
||||
divisors = [1]
|
||||
for i in range(1, min(n+1, maximum+1)):
|
||||
if n % i == 0 and i not in divisors:
|
||||
divisors.append(i)
|
||||
return divisors
|
||||
|
||||
|
||||
def greatest_common_divisor(*numbers):
|
||||
divisors = []
|
||||
numbers = list(numbers)
|
||||
numbers.sort()
|
||||
maximum = min(numbers[0], round(numbers[-1:][0] / 2))
|
||||
number_of_numbers = len(numbers)
|
||||
for number in numbers:
|
||||
divisors += divisorGenerator(number, maximum)
|
||||
divisors.sort()
|
||||
divisors.reverse()
|
||||
for divisor in divisors:
|
||||
if divisors.count(divisor) == number_of_numbers:
|
||||
return divisor
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||||
assert greatest_common_divisor(6, 4) == 2, "Simple"
|
||||
assert greatest_common_divisor(2, 4, 8) == 2, "Three arguments"
|
||||
assert greatest_common_divisor(2, 3, 5, 7, 11) == 1, "Prime numbers"
|
||||
assert greatest_common_divisor(3, 9, 3, 9) == 3, "Repeating arguments"
|
||||
assert greatest_common_divisor(1, 1) == 1, "1"
|
||||
assert greatest_common_divisor(4294967296, 2) == 2, "Edge2"
|
45
Blizzard/the-highest-building.py
Normal file
45
Blizzard/the-highest-building.py
Normal file
@ -0,0 +1,45 @@
|
||||
def highest_building(buildings):
|
||||
for height, building in enumerate(buildings):
|
||||
if building.count(1) > 0:
|
||||
return [building.index(1)+1, len(buildings) - height]
|
||||
return [0, 0]
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Example:")
|
||||
print(highest_building([
|
||||
[0, 0, 1, 0],
|
||||
[1, 0, 1, 0],
|
||||
[1, 1, 1, 0],
|
||||
[1, 1, 1, 1]
|
||||
]))
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||||
assert highest_building([
|
||||
[0, 0, 1, 0],
|
||||
[1, 0, 1, 0],
|
||||
[1, 1, 1, 0],
|
||||
[1, 1, 1, 1]
|
||||
]) == [3, 4], "Common"
|
||||
assert highest_building([
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 0],
|
||||
[0, 0, 0, 1]
|
||||
]) == [4, 1], "Cabin in the wood"
|
||||
assert highest_building([
|
||||
[1, 0, 0, 0, 0],
|
||||
[1, 1, 0, 0, 0],
|
||||
[1, 1, 1, 0, 0],
|
||||
[1, 1, 1, 1, 0],
|
||||
[1, 1, 1, 1, 1]
|
||||
]) == [1, 5], "Triangle"
|
||||
assert highest_building([
|
||||
[0, 0, 0, 1, 0, 0, 0],
|
||||
[0, 0, 1, 1, 1, 0, 0],
|
||||
[0, 1, 1, 1, 1, 1, 0],
|
||||
[1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1]
|
||||
]) == [4, 6], "Pyramid"
|
||||
print("Coding complete? Click 'Check' to earn cool rewards!")
|
25
Blizzard/when-is-friday.py
Normal file
25
Blizzard/when-is-friday.py
Normal file
@ -0,0 +1,25 @@
|
||||
from datetime import date
|
||||
|
||||
|
||||
def friday(day):
|
||||
day, month, year = list(map(int, day.split(".")))
|
||||
the_date = date(year, month, day)
|
||||
friday_count = 4
|
||||
the_date_weekday = the_date.weekday()
|
||||
if the_date_weekday == 4:
|
||||
return 0
|
||||
elif the_date_weekday < friday_count:
|
||||
return friday_count - the_date_weekday
|
||||
else:
|
||||
return 7 - the_date_weekday + friday_count
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Example:")
|
||||
print(friday('23.04.2018'))
|
||||
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||||
assert friday('23.04.2018') == 4
|
||||
assert friday('01.01.1999') == 0
|
||||
assert friday("11.11.1111") == 6
|
||||
print("Coding complete? Click 'Check' to earn cool rewards!")
|
21
Home/pawn-brotherhood.py
Normal file
21
Home/pawn-brotherhood.py
Normal file
@ -0,0 +1,21 @@
|
||||
def safe_pawns(pawns: set) -> int:
|
||||
cols = "abcdefgh"
|
||||
safe_count = 0
|
||||
for pawn in pawns:
|
||||
row = int(pawn[1])
|
||||
if row == 1:
|
||||
continue
|
||||
col_index = cols.index(pawn[0])
|
||||
protector_1 = cols[col_index - 1] + str(row - 1) if col_index - 1 >= 0 else None
|
||||
protector_2 = cols[col_index + 1] + str(row - 1) if col_index + 1 < len(pawns) and row > 1 else None
|
||||
if protector_1 in pawns or protector_2 in pawns:
|
||||
safe_count += 1
|
||||
return safe_count
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# These "asserts" using only for self-checking and not necessary for auto-testing
|
||||
assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
|
||||
assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
|
||||
assert safe_pawns({"a1", "b2", "c3", "d4", "e5", "f6", "g7", "h8"}) == 8
|
||||
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")
|
Loading…
Reference in New Issue
Block a user