افزودن تمرین‌های اولیه


وقتی تمرین 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 دشوار تجزیه

پیاده‌سازی تمرین‌ها

حالا که تمرین‌هایی را که می‌خواهید در مسیرتان بگنجانید انتخاب کرده‌اید، قدم بعدی پیاده‌سازی آن‌هاست. مستندات افزودن تمرین عملی دستورهای گام‌به‌گام مفصلی برای افزودن یک تمرین عملی دارد.