کلاس مهدکودک در حال یادگیری دربارهی رشد گیاهان است. معلم فکر کرد ایدهی خوبی است که به بچههای کلاس دانه بدهد تا در خاک بکارند و رشد دهند. برای همین، بچهها لیوانهای کوچکی را کنار طاقچههای پنجره گذاشتهاند و در هر لیوان یک نوع گیاه کاشتهاند. بچهها توانستند از میان چهار نوع دانهی موجود، نوع مورد علاقهشان را انتخاب کنند: چمن، شبدر، تربچه و بنفشه.
وظیفهی شما این است که با در دست داشتن یک نمودار، مشخص کنید هر کودک در کلاس مهدکودک مسئول کدام گیاهان است.
در این کلاس ۱۲ کودک هستند:
چهار نوع مختلف بذر کاشته میشود:
| گیاه | کدگذاری در نمودار |
|---|---|
| Grass | G |
| Clover | C |
| Radish | R |
| Violet | V |
هر کودک چهار لیوان دارد، دو تا در هر ردیف:
[window][window][window]
........................ # each dot represents a cup
........................
معلمشان لیوانها را به ترتیب الفبای اسم بچهها به آنها اختصاص میدهد، یعنی Alice اول میآید و Larry آخر.
این یک نمودار نمونه است که گیاهان Alice را نشان میدهد:
[window][window][window]
VR......................
RG......................
در ردیف اول، نزدیکترین ردیف به پنجرهها، او یک violet و یک radish دارد. در ردیف دوم یک radish و مقداری grass دارد.
به برنامهی شما گیاهان از چپ به راست و با شروع از ردیفی که به پنجرهها نزدیکتر است داده میشود. بر این اساس، برنامه باید بتواند تشخیص دهد کدام گیاهان به هر دانشآموز تعلق دارند.
برای نمونه، اگر به آن گفته شود که باغ چنین شکلی دارد:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
آنگاه اگر گیاهان Alice خواسته شود، باید اینها را ارائه دهد:
و اگر گیاهان Bob خواسته شود، نتیجه این میشود:
آزمونهای این تمرین انتظار دارند که برنامهی شما در قالب یک class با اسم Garden پیادهسازی شود (به classes هم نگاه کنید).
اگر با کلاسها در پایتون آشنا نیستید، این آموزش Real Python میتواند نقطهی شروع خوب دیگری باشد.
class شما باید یک method به اسم plants پیادهسازی کند که اسم یک دانشآموز را بهعنوان ورودی میگیرد و list اسمهای گیاهان متعلق به آن دانشآموز را برمیگرداند.
ساختن باغ نمونه:
[window][window][window]
VRCGVVRVCGGCCGVRGCVCGCGV
VRCCCGCRRGVCGCRVVCVGCGCV
در آزمونها بهصورت Garden("VRCGVVRVCGGCCGVRGCVCGCGV\nVRCCCGCRRGVCGCRVVCVGCGCV") نمایش داده میشود.
برای اینکه این نمایش کار کند، class شما باید یک متد ویژه به اسم __init__() پیادهسازی کند.
اگر با __init__() یا سازندهها آشنا نیستید، اشیای کلاس و نمونه در مستندات پایتون توضیح مفصلتری میدهد.
در برخی آزمونها، یک list از دانشآموزان بهعنوان ورودی به __init__() داده میشود.
این باید جایگزین فهرست دوازده دانشآموزی شود که در صورت مسئله آمده است.
هر دوی این دستورها باید با متد __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"])
یک راه این است که list دانشآموزان را به یک آرگومان پیشفرض تبدیل کنید؛ مستندات پایتون در حین توضیح تعریفهای تابع، default parameters را با جزئیات شرح میدهد.