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:
L'esercizio richiede di scrivere una classe che fornisca un metodo per ogni bambino dell'asilo.
Puoi rendere il lavoro meno ripetitivo (e più divertente!) se, invece di definire manualmente 12 metodi diversi, usi un po' di metaprogrammazione.
Se non sai da dove cominciare, esplora i metodi method_missing o define_method.
Iscriviti a Exercism per imparare e padroneggiare Ruby con 21 concetti121 esercizi e il mentoring di persone reali, tutto gratis.