بعد أن تُنفّذ تمرين hello-world، تكون مهمتك التالية هي تنفيذ أكثر من 20 تمرينًا آخر.
هناك نوعان من التمارين يمكنك تنفيذها:
بشكل عام، نوصي المسارات الجديدة بالبدء بتنفيذ تمارين التدريب، فهي أسهل في التنفيذ وتتطلب تفكيرًا أقل في البداية. ويمكن دائمًا إضافة تمارين المفاهيم لاحقًا، بعد أن يصبح مسارك جاهزًا ويعمل بشكل جيد.
لمساعدة المسارات في تنفيذ تمارين التدريب، أنشأنا مستودع exercism/problem-specifications. يحتوي هذا المستودع على بيانات وصفية لأكثر من 100 تمرين تدريب، يمكن للمسارات المختلفة استخدامها لتنفيذ نسختها الخاصة بمسارها من هذه التمارين. ولهذا السبب، سترى التمارين نفسها منفَّذة في مسارات مختلفة كثيرة.
فكيف تختار أكثر من 20 تمرينًا من قائمة تضم أكثر من 100 تمرين؟ إليك بعض الإرشادات.
هناك تنوع كبير في المفاهيم المستخدمة في هذه التمارين التي تتجاوز 100 تمرين. ينبغي أن تستهدف تنفيذ تمارين تدرّب الطلاب على تشكيلة واسعة من المفاهيم. فبدلًا من تنفيذ 20 تمرينًا تركّز على السلاسل النصية، حاول تنفيذ تمارين تركّز على مفاهيم مختلفة.
إليك بعض المفاهيم مع تمارين نموذجية:
| المفاهيم | التمارين |
|---|---|
| معالجة البتات | allergies, secret-handshake |
| القيم المنطقية | leap |
| الأصناف | circular-buffer, robot-name |
| التزامن | bank-account |
| الجمل الشرطية | raindrops |
| التواريخ والوقت | gigasecond, meetup |
| المساواة | clock |
| أعداد الفاصلة العائمة | darts, space-age |
| التقييم الكسول | alphametics, zebra-puzzle |
| المصفوفات | resistor-color, spiral-matrix |
| الحلقات | collatz-conjecture, protein-translation |
| الخرائط | nucleotide-count |
| الأعداد | leap, grains |
| العشوائية | dnd-character, robot-name |
| السلاسل النصية | bob, isogram, |
| الأشجار | binary-search-tree, pov |
بعض التمارين يكون تنفيذها أصعب من غيرها. ينبغي أن تستهدف تنفيذ تمارين متفاوتة الصعوبة: بعضها سهل، وبعضها متوسط، وبعضها صعب.
تعتمد صعوبة التمرين على عدة عوامل، مثل المفاهيم التي يتضمنها ولغة المسار. قد يفيدك أن تطّلع على شكل التمرين في مسارات أخرى نفّذته، لتكوّن فكرة أوضح عمّا قد يبدو عليه التنفيذ.
إليك بعض درجات الصعوبة مع التمارين:
| الصعوبة | التمارين |
|---|---|
| سهل | darts, gigasecond, isogram, leap, resistor-color, space-age |
| متوسط | allergies, bob, meetup, protein-translation, raindrops, secret-handshake |
| صعب | alphametics, forth, react, pov, zebra-puzzle, zipper |
قد لا تناسب كل التمارين مسارك. اختر فقط التمارين التي تناسب مسارك؛ فالأفضل ألّا تنفّذ تمرينًا بدلًا من تنفيذ تمرين لا معنى له. على سبيل المثال، يطلب تمرين lens-person من الطالب العمل باستخدام العدسات، وهي ميزة لا تدعمها لغات كثيرة.
إذا وجدت تمرينًا لا يناسب مسارك، يمكنك إضافة معرّفه إلى مصفوفة exercises.foregone في ملف config.json الخاص بالمسار.
سيضمن ذلك أن تتجاهل الأدوات هذا التمرين.
ولجعل هذا كله أكثر تحديدًا، هكذا قد تبدو تشكيلة نموذجية من التمارين الأولية:
| التمرين | الصعوبة | المفاهيم |
|---|---|---|
| hello-world | سهل | لا شيء (تمرين أولي) |
| leap | سهل | الأعداد، القيم المنطقية |
| gigasecond | سهل | التواريخ والوقت |
| isogram | سهل | السلاسل النصية |
| resistor-color | سهل | المصفوفات |
| nucleotide-count | سهل | الخرائط |
| collatz-conjecture | سهل | الحلقات |
| darts | سهل | أعداد الفاصلة العائمة |
| two-fer | سهل | تنسيق السلاسل النصية، الوسائط الاختيارية |
| high-scores | سهل | معالجة المجموعات |
| raindrops | متوسط | الجمل الشرطية |
| bob | متوسط | السلاسل النصية |
| allergies | متوسط | معالجة البتات |
| series | متوسط | الاستثناءات |
| circular-buffer | متوسط | الأصناف |
| meetup | متوسط | التواريخ والوقت |
| yacht | متوسط | المصفوفات |
| dominoes | صعب | الصفوف، التقييم الكسول |
| diamond | صعب | تنسيق السلاسل النصية |
| alphametics | صعب | التقييم الكسول |
| forth | صعب | التحليل |
بعد اختيار التمارين التي تريد تضمينها في مسارك، تكون الخطوة التالية هي تنفيذها. تتضمن وثائق إضافة تمرين تدريب تعليمات مفصّلة حول كيفية إضافة تمرين تدريب.