diff --git a/u5/kindergarten_garden.py b/u5/kindergarten_garden.py new file mode 100644 index 0000000..e3ee24b --- /dev/null +++ b/u5/kindergarten_garden.py @@ -0,0 +1,38 @@ +def bidirectional_dict(d: dict) -> dict: + for k, v in list(d.items()): + d[v] = k + return d + + +class NoSuchStudentException(Exception): + """Raised when plants are requested for a student not assigned a plot.""" + +class Garden: + PLANTS = bidirectional_dict({ + "Tráva": "G", + "Ďatelina": "C", + "Reďkovky": "R", + "Fialky": "V" + }) + + students = {} + + rows: list[str] + + + def __init__(self, seq: str, students: list[str] = ["Alena", "Boris", "Cyril", "Daniel", "Eva", "František", "Gitka", "Helena", "Ivana", "Jozef", "Karol", "Ladislav"]): + self.rows = seq.split("\n") + if students is not None: + self.students = {name: "" for name in sorted(students)} + self.parse() + + def parse(self): + for row in self.rows: + for x in range(0, len(row), 2): + self.students[list(self.students.keys())[x//2]] += row[x:x+2] + + def plants(self, name: str) -> list: + student_plants = self.students.get(name) + if student_plants is None: + raise NoSuchStudentException(f"Student {name} is not assigned a plot.") + return [self.PLANTS.get(c) for c in student_plants] \ No newline at end of file