La classe de maternelle apprend à faire pousser des plantes. L'enseignant a jugé bon de donner à la classe des graines à planter et à faire pousser dans la terre. Pour ce faire, les enfants ont disposé de petits gobelets le long des rebords de fenêtre et ont planté un type de plante dans chaque gobelet. Les enfants ont pu choisir leurs préférées parmi quatre types de graines disponibles : gazon, trèfle, radis et violettes.
Ta tâche est de déterminer, à partir d'un diagramme, quelles plantes chaque enfant de la classe de maternelle a la charge de cultiver.
La classe compte 12 enfants :
Quatre types de graines différentes sont plantés :
| Plante | Encodage du diagramme |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Chaque enfant reçoit quatre godets, deux sur chaque rangée :
[window][window][window]
........................ # each dot represents a cup
........................
Leur professeur attribue les godets aux enfants par ordre alphabétique de leur prénom, ce qui signifie qu'Alice arrive en premier et Larry en dernier.
Voici un exemple de diagramme qui représente les plantes d'Alice :
[window][window][window]
VR......................
RG......................
Dans la première rangée, la plus proche des fenêtres, elle a un violet et un radish. Dans la deuxième rangée, elle a un radish et du grass.
Ton programme recevra les plantes de gauche à droite, en commençant par la rangée la plus proche des fenêtres. À partir de ces informations, il doit pouvoir déterminer quelles plantes appartiennent à chaque enfant.
Par exemple, si on lui indique que le jardin ressemble à ceci :
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Alors, si on lui demande les plantes d'Alice, il doit fournir :
tandis que si on lui demande les plantes de Bob, on obtient :
Les tests de cet exercice attendent que ton programme soit implémenté sous la forme d'une class Garden (voir aussi classes).
Si tu ne connais pas les classes en Python, ce tutoriel Real Python peut être un bon point de départ supplémentaire.
Ta class doit implémenter une method appelée plants, qui prend le nom d'un élève en argument et renvoie la list des noms de plantes qui appartiennent à cet élève.
Création du jardin d'exemple :
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
serait, dans les tests, représenté par Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV").
Pour que cette représentation fonctionne, ta class devra implémenter une __init__() méthode spéciale.
Si tu ne connais pas __init__() ni les constructeurs, la section Objets de classe et objets d'instance de la documentation Python donne une explication plus détaillée.
Dans certains tests, une list d'élèves est passée en argument à __init__().
Elle doit remplacer la liste des douze élèves fournie dans l'énoncé.
Ces deux instructions doivent fonctionner avec ta méthode __init__() :
# 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"])
Une approche consiste à faire de la list d'élèves un argument par défaut ; la documentation Python décrit en détail les default parameters tout en expliquant les définitions de fonctions.
Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.