وقتی تمرین hello-world را پیادهسازی کردید، کار بعدی پیادهسازی بیش از ۲۰ تمرین دیگر است.
دو نوع تمرین وجود دارد که میتوانید پیادهسازی کنید:
بهطور کلی، توصیه میکنیم مسیرهای جدید با پیادهسازی تمرینهای عملی شروع کنند، چون پیادهسازیشان آسانتر است و در ابتدا تفکر کمتری میطلبد. تمرینهای مفهومی را همیشه میتوان بعداً اضافه کرد، یعنی وقتی مسیرتان بهدرستی راه افتاد.
برای کمک به مسیرها در پیادهسازی تمرینهای عملی، مخزن exercism/problem-specifications را ساختهایم. این مخزن شامل فرادادهی بیش از ۱۰۰ تمرین عملی است که مسیرهای مختلف میتوانند از آن برای پیادهسازی نسخهی مخصوص خودشان از این تمرینها استفاده کنند. به همین دلیل، تمرینهای یکسانی را در مسیرهای مختلف خواهید دید.
حالا چطور از میان این فهرست ۱۰۰ تمرینی، آن بیش از ۲۰ تمرین را انتخاب میکنید؟ چند راهنما برایتان داریم.
مفاهیمی که در این بیش از ۱۰۰ تمرین استفاده شدهاند، تنوع زیادی دارند. باید تمرینهایی را پیادهسازی کنید که دانشجو در آنها طیف گستردهای از مفاهیم را تمرین کند. پس بهجای پیادهسازی ۲۰ تمرین که همه بر رشتهها متمرکزند، سعی کنید تمرینهایی پیادهسازی کنید که بر مفاهیم متفاوتی متمرکز باشند.
چند مفهوم همراه با تمرینهای نمونه:
| مفهوم | تمرین |
|---|---|
| دستکاری بیت | 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 دانشجو با لنزها کار میکند، چیزی که بسیاری از زبانها از آن پشتیبانی نمیکنند.
اگر به تمرینی برخوردید که با مسیر شما جور نیست، میتوانید slug آن را به آرایهی 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 | دشوار | تجزیه |
حالا که تمرینهایی را که میخواهید در مسیرتان بگنجانید انتخاب کردهاید، قدم بعدی پیادهسازی آنهاست. مستندات افزودن تمرین عملی دستورهای گامبهگام مفصلی برای افزودن یک تمرین عملی دارد.