Die Kindergartengruppe lernt gerade etwas über das Anbauen von Pflanzen. Die Lehrkraft fand es eine gute Idee, der Klasse Samen zu geben, damit sie sie in die Erde pflanzen und großziehen können. Zu diesem Zweck haben die Kinder kleine Becher auf die Fensterbänke gestellt und in jeden Becher eine Pflanzensorte gepflanzt. Aus vier verfügbaren Samensorten durften die Kinder ihre Favoriten auswählen: grass, clover, radishes und violets.
Deine Aufgabe ist es, anhand eines Diagramms zu bestimmen, für welche Pflanzen jedes Kind in der Kindergartenklasse verantwortlich ist.
In der Klasse sind 12 Kinder:
Es werden vier verschiedene Samensorten gepflanzt:
| Pflanze | Kodierung im Diagramm |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Jedes Kind bekommt vier Becher, zwei pro Reihe:
[window][window][window]
........................ # each dot represents a cup
........................
Ihre Lehrkraft teilt die Becher den Kindern alphabetisch nach ihren Namen zu. Das heißt: Alice kommt zuerst und Larry zuletzt.
Hier ist ein Beispieldiagramm, das Alices Pflanzen zeigt:
[window][window][window]
VR......................
RG......................
In der ersten Reihe, am nächsten zu den Fenstern, hat sie violet und radish. In der zweiten Reihe hat sie radish und grass.
Deinem Programm werden die Pflanzen von links nach rechts übergeben, beginnend mit der Reihe, die am nächsten zu den Fenstern liegt. Daraus soll es bestimmen können, welche Pflanzen zu welchem Kind gehören.
Wenn ihm zum Beispiel gesagt wird, dass der Garten so aussieht:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Fragt man dann nach Alices Pflanzen, sollte es Folgendes zurückgeben:
Fragt man dagegen nach Bobs Pflanzen, ergibt sich:
Die Tests für diese Übung erwarten, dass dein Programm als class namens Garden umgesetzt wird (siehe auch classes).
Wenn du mit Klassen in Python noch nicht vertraut bist, ist dieses Real-Python-Tutorial vielleicht ein guter zusätzlicher Einstieg.
Deine class sollte eine method namens plants implementieren, die den Namen eines Schülers als Argument entgegennimmt und die list der Pflanzennamen zurückgibt, die zu diesem Schüler gehören.
Das Anlegen des Beispielgartens:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
würde in den Tests als Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV") dargestellt.
Damit diese Darstellung funktioniert, muss deine class eine __init__() spezielle Methode implementieren.
Wenn du mit __init__() oder Konstruktoren nicht vertraut bist, gibt Klassen- und Instanzobjekte aus der Python-Dokumentation eine ausführlichere Erklärung.
In einigen Tests wird eine list von Schülern als Argument an __init__() übergeben.
Diese sollte die zwölf Schüler umfassende Liste aus der Aufgabenstellung überschreiben.
Beide folgenden Anweisungen müssen mit deiner __init__()-Methode funktionieren:
# Make a garden based on the default 12-student roster.
Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV")
# Make a garden based on a 2-student roster.
Garden("VRCC\nVCGG", students=["Valorie", "Raven"])
Eine Möglichkeit ist, die Schüler-list zu einem Standardargument zu machen; die Python-Dokumentation beschreibt default parameters ausführlich bei der Erklärung von Funktionsdefinitionen.
Melde dich bei Exercism an, um Python mit 17 Konzepte146 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.