Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Army Units by tokiojapan55
class Army:
def train_swordsman(self, name):
raise NotImplementedError()
def train_lancer(self, name):
raise NotImplementedError()
def train_archer(self, name):
raise NotImplementedError()
class Swordsman:
def introduce(self):
raise NotImplementedError()
class Lancer:
def introduce(self):
raise NotImplementedError()
class Archer:
def introduce(self):
raise NotImplementedError()
class AsianSwordsman(Swordsman):
def __init__(self, name):
self.name = name
def introduce(self):
return "Samurai {}, Asian swordsman".format(self.name)
class AsianLancer(Lancer):
def __init__(self, name):
self.name = name
def introduce(self):
return "Ronin {}, Asian lancer".format(self.name)
class AsianArcher(Archer):
def __init__(self, name):
self.name = name
def introduce(self):
return "Shinobi {}, Asian archer".format(self.name)
class EuropeanSwordsman(Swordsman):
def __init__(self, name):
self.name = name
def introduce(self):
return "Knight {}, European swordsman".format(self.name)
class EuropeanLancer(Lancer):
def __init__(self, name):
self.name = name
def introduce(self):
return "Raubritter {}, European lancer".format(self.name)
class EuropeanArcher(Archer):
def __init__(self, name):
self.name = name
def introduce(self):
return "Ranger {}, European archer".format(self.name)
class AsianArmy(Army):
def train_swordsman(self, name):
return AsianSwordsman(name)
def train_lancer(self, name):
return AsianLancer(name)
def train_archer(self, name):
return AsianArcher(name)
class EuropeanArmy(Army):
def train_swordsman(self, name):
return EuropeanSwordsman(name)
def train_lancer(self, name):
return EuropeanLancer(name)
def train_archer(self, name):
return EuropeanArcher(name)
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
my_army = EuropeanArmy()
enemy_army = AsianArmy()
soldier_1 = my_army.train_swordsman("Jaks")
soldier_2 = my_army.train_lancer("Harold")
soldier_3 = my_army.train_archer("Robin")
soldier_4 = enemy_army.train_swordsman("Kishimoto")
soldier_5 = enemy_army.train_lancer("Ayabusa")
soldier_6 = enemy_army.train_archer("Kirigae")
assert soldier_1.introduce() == "Knight Jaks, European swordsman"
assert soldier_2.introduce() == "Raubritter Harold, European lancer"
assert soldier_3.introduce() == "Ranger Robin, European archer"
assert soldier_4.introduce() == "Samurai Kishimoto, Asian swordsman"
assert soldier_5.introduce() == "Ronin Ayabusa, Asian lancer"
assert soldier_6.introduce() == "Shinobi Kirigae, Asian archer"
print("Coding complete? Let's try tests!")
March 24, 2020
Comments: