Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Can you beat my Army? solution in Clear category for Army Battles by Stensen
class Warrior:
def __init__(self): self.health = 50; self.attack = 5
@property
def is_alive(self): return self.health > 0
class Knight(Warrior):
def __init__(self): super().__init__(); self.attack = 7
def fight(unit_1, unit_2):
while unit_1.is_alive and unit_2.is_alive:
unit_2.health -= unit_1.attack
unit_1.health -= unit_2.attack if unit_2.is_alive else 0
return unit_1.is_alive
class Army:
def __init__(self): self.army = []
def add_units(self, unit, q): self.army += [unit() for _ in range(q)]
def __len__(self): return len(self.army)
class Battle:
@staticmethod
def fight(army1, army2):
assert type(army1) == Army; assert type(army2) == Army
while len(army1) > 0 and len(army2) > 0:
if fight(army1.army[0], army2.army[0]): army2.army.pop(0)
else: army1.army.pop(0)
return len(army1) > 0
Oct. 8, 2020
Comments: