45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
class NoSuchStudentException(Exception):
|
|
|
|
pass
|
|
|
|
|
|
class Garden:
|
|
|
|
DEFAULT_STUDENTS = [
|
|
"Alena", "Boris", "Cyril", "Daniel",
|
|
"Eva", "František", "Gitka", "Helena",
|
|
"Ivana", "Jozef", "Karol", "Ladislav"
|
|
]
|
|
|
|
PLANT_MAP = {
|
|
"G": "Tráva",
|
|
"C": "Ďatelina",
|
|
"R": "Reďkovky",
|
|
"V": "Fialky"
|
|
}
|
|
|
|
def __init__(self, diagram: str, students: list[str] = None):
|
|
self.rows = diagram.splitlines()
|
|
|
|
|
|
if students is not None:
|
|
self.students = sorted(students)
|
|
else:
|
|
self.students = self.DEFAULT_STUDENTS
|
|
|
|
def plants(self, student_name: str) -> list[str]:
|
|
if student_name not in self.students:
|
|
raise NoSuchStudentException(f"Učeň {student_name} neexistuje v tomto záhone.")
|
|
|
|
student_index = self.students.index(student_name)
|
|
|
|
start_col = student_index * 2
|
|
|
|
top_plants = self.rows[0][start_col:start_col + 2]
|
|
bottom_plants = self.rows[1][start_col:start_col + 2]
|
|
|
|
raw_chars = list(top_plants + bottom_plants)
|
|
|
|
result = [self.PLANT_MAP[char] for char in raw_chars]
|
|
|
|
return result |