La classe della scuola dell'infanzia sta imparando a coltivare le piante. L'insegnante ha pensato che sarebbe stata una buona idea dare alla classe dei semi da piantare e far crescere nella terra. A questo scopo, i bambini hanno messo dei bicchierini sui davanzali e hanno piantato un tipo di pianta in ogni bicchiere. I bambini hanno potuto scegliere i loro preferiti tra quattro tipi di semi disponibili: grass, clover, radishes e violets.
Il tuo compito è, dato un diagramma, determinare quali piante spettano a ciascun bambino della classe dell'asilo.
Nella classe ci sono 12 bambini:
Vengono piantati quattro tipi diversi di semi:
| Pianta | Codifica nel diagramma |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Ogni bambino riceve quattro bicchieri, due su ogni riga:
[window][window][window]
........................ # each dot represents a cup
........................
L'insegnante assegna i bicchieri ai bambini in ordine alfabetico in base ai loro nomi: Alice viene per prima e Larry per ultimo.
Ecco un esempio di diagramma che rappresenta le piante di Alice:
[window][window][window]
VR......................
RG......................
Nella prima riga, quella più vicina alle finestre, ha una violet ed un radish. Nella seconda riga ha un radish e del grass.
Il programma riceverà le piante da sinistra a destra, a partire dalla riga più vicina alle finestre. Da qui dovrebbe riuscire a determinare quali piante appartengono a ciascun bambino.
Per esempio, se gli viene detto che il giardino è questo:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Se poi gli vengono chieste le piante di Alice, dovrebbe restituire:
Mentre chiedendo le piante di Bob si otterrebbe:
I test di questo esercizio si aspettano che il tuo programma sia implementato come una class Garden (vedi anche classes).
Se non hai familiarità con le classi in Python, questo tutorial di Real Python potrebbe essere un buon punto di partenza in più.
La tua class dovrebbe implementare un method chiamato plants, che prende il nome di uno studente come argomento e restituisce la list dei nomi delle piante che appartengono a quello studente.
La creazione del giardino di esempio:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
sarebbe, nei test, rappresentata come Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV").
Per far funzionare questa rappresentazione, la tua class dovrà implementare un __init__() metodo speciale.
Se non hai familiarità con __init__() o con i costruttori, oggetti classe e oggetti istanza della documentazione di Python offre una spiegazione più dettagliata.
In alcuni test, una list di studenti viene passata come argomento a __init__().
Questa dovrebbe sostituire l'elenco di dodici studenti fornito nella descrizione del problema.
Entrambe queste istruzioni devono funzionare con il tuo metodo __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"])
Un possibile approccio è rendere la list di studenti un argomento predefinito; la documentazione di Python descrive in dettaglio i default parameters mentre spiega le definizioni di funzione.
Iscriviti a Exercism per imparare e padroneggiare Python con 17 concetti146 esercizi e il mentoring di persone reali, tutto gratis.