يتعلّم صف رياض الأطفال زراعة النباتات. ورأت المعلّمة أن من الجيد أن تمنح الصف بذورًا ليزرعوها وينمّوها في التراب. وتحقيقًا لذلك، وضع الأطفال أكوابًا صغيرة على طول عتبات النوافذ، وزرعوا في كل كوب نوعًا واحدًا من النبات. وقد أتيح للأطفال أن يختاروا ما يفضلونه من بين أربعة أنواع متاحة من البذور: grass وclover وradishes وviolets.
مهمتك هي أن تحدد، انطلاقًا من مخطط، النباتات المسؤول عنها كل طفل في صف رياض الأطفال.
يوجد في الصف 12 طفلًا:
تُزرع أربعة أنواع مختلفة من البذور:
| النبات | ترميز المخطط |
|---|---|
| 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، فسينتج:
يبدأ وسيط diagram كل صف بـ \n.
وهذا يسمح للسلاسل النصية الخام في Go بعرض المخططات في الكود المصدري بشكل أنيق على هيئة صفّين محاذيين إلى اليسار.
على سبيل المثال، قد يحتوي الاختبار على ما يلي.
diagram := `
VVCCGG
VVCCGG`
إذا كان وسيط children هو nil، فاستخدم قائمة الأطفال المعرَّفة في التعليمات أعلاه.
أما إذا لم يكن nil، فاستخدم القيمة المعطاة.
سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.