Az óvodai csoport éppen azt tanulja, hogyan lehet növényeket termeszteni. Az óvó néni úgy gondolta, jó ötlet lenne, ha a gyerekek magokat kapnának, hogy elültessék és megnövesszék őket a földben. Ezért a gyerekek kis poharakat tettek az ablakpárkányokra, és minden pohárba egy-egy fajta növényt ültettek. A gyerekek négyféle mag közül választhatták ki a kedvencüket: fű, lóhere, retek és ibolya.
A feladatod, hogy egy diagram alapján meghatározd, hogy az óvodai osztály melyik gyereke mely növényekért felelős.
Az osztályba 12 gyerek jár:
Négyféle magot ültetnek el:
| Növény | Kódolás a diagramban |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
Minden gyerek négy poharat kap, soronként kettőt:
[window][window][window]
........................ # each dot represents a cup
........................
A tanár a poharakat a gyerekek nevének ábécésorrendje szerint osztja ki, ami azt jelenti, hogy Alice következik elsőként, Larry pedig utolsóként.
Íme egy példadiagram, amely Alice növényeit mutatja:
[window][window][window]
VR......................
RG......................
Az első sorban, az ablakokhoz legközelebb egy violet és egy radish található. A második sorban egy radish és némi grass.
A programod a növényeket balról jobbra kapja meg, az ablakokhoz legközelebbi sorral kezdve. Ebből meg kell tudnia határozni, hogy melyik növény melyik tanulóhoz tartozik.
Például ha azt kapja bemenetként, hogy a kert így néz ki:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Akkor ha Alice növényeit kérdezik tőle, ezt kell visszaadnia:
Ha viszont Bob növényeit kérdezik, ez lesz az eredmény:
A feladat tesztjei azt várják, hogy a programodat egy Garden class-ként valósítsd meg (lásd még: classes).
Ha még nem ismered a Python osztályait, ez a Real Python útmutató jó további kiindulópont lehet.
A class-ednek implementálnia kell egy plants nevű method-ot, amely argumentumként egy tanuló nevét kapja, és visszaadja a tanulóhoz tartozó növénynevek list-jét.
A példakert létrehozása:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
Ez a tesztekben így jelenne meg: Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV").
Ahhoz, hogy ez a reprezentáció működjön, a class-ednek implementálnia kell egy __init__() speciális metódust.
Ha nem ismered a __init__()-et vagy a konstruktorokat, a Python dokumentációjának osztály- és példányobjektumok című része részletesebb magyarázatot ad.
Néhány tesztben a tanulók egy list-jét adják át argumentumként az __init__()-nek.
Ennek felül kell írnia a feladatkiírásban megadott tizenkét tanulós névsort.
Mindkét utasításnak működnie kell az __init__() metódusoddal:
# 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"])
Az egyik megközelítés, hogy a tanulók list-jét alapértelmezett argumentummá alakítod; a Python dokumentációja részletesen ír a default parameters-ről, miközben a függvénydefiníciókat is elmagyarázza.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.