سال کبیسه

سال کبیسه

آسان

مقدمه

«سال کبیسه» (در تقویم میلادی) زمانی رخ می‌دهد که:

  • سال بر ۴ بخش‌پذیر باشد.
  • مگر اینکه سال بر ۱۰۰ بخش‌پذیر باشد؛ در این صورت فقط وقتی سال کبیسه است که بر ۴۰۰ هم بخش‌پذیر باشد.

چند مثال:

  • ۱۹۹۷ کبیسه نبود، چون بر ۴ بخش‌پذیر نیست.
  • ۱۹۰۰ کبیسه نبود، چون بر ۴۰۰ بخش‌پذیر نیست.
  • ۲۰۰۰ کبیسه بود!
Note

برای توضیحی دلنشین و چهار دقیقه‌ای درباره‌ی کل پدیده‌ی سال‌های کبیسه، این ویدیوی یوتیوب را ببینید.

دستورالعمل‌ها

وظیفه‌ی شما این است که مشخص کنید آیا یک سال داده‌شده سال کبیسه است یا نه.

پیاده‌سازی

پیش از شروع، مطمئن شوید که می‌دانید چطور code بنویسید که بتواند از عهده‌ی موارد test بربیاید. برای اطلاعات بیشتر، این tutorial را ببینید.

بیشتر تمرین‌های Java چندین مورد test دارند. این موارد طوری ساختار یافته‌اند که از یک فرایند مفید به نام توسعه‌ی مبتنی بر test (TDD) پشتیبانی کنند. TDD شامل تکرار یک چرخه‌ی ساختارمند است که به برنامه‌نویسان کمک می‌کند قابلیت‌های پیچیده را تکه‌تکه بسازند، نه یک‌جا. این چرخه را می‌توان چنین توصیف کرد:

  1. یک test اضافه کنید که بخشی از قابلیت موردنظر را توصیف کند، قابلیتی که code شما در حال حاضر ندارد.
  2. testها را اجرا کنید تا مطمئن شوید که این test تازه‌اضافه‌شده شکست می‌خورد.
  3. code فعلی خود را به‌روزرسانی کنید تا:
    • همه‌ی testهای قبلی همچنان موفق شوند؛
    • test جدید هم موفق شود.
  4. code خود را پاکسازی کنید و مطمئن شوید که همه‌ی testها همچنان موفق می‌شوند. این کار معمولاً شامل تغییر اسم متغیرها، حذف بخش‌های تکراری منطق، حذف لاگ‌های باقی‌مانده و مواردی از این قبیل است.
  5. به گام ۱ برگردید تا همه‌ی قابلیت‌های موردنظر ساخته شوند!

فایل‌های test در این مسیر شامل همه‌ی testهایی است که راه‌حل شما برای معتبر شمرده شدن باید در آن‌ها موفق شود. در نگاه اول به نظر نمی‌رسد که این با چرخه‌ی توصیف‌شده در بالا سازگار باشد؛ چرخه‌ای که testها در آن یکی‌یکی نوشته می‌شوند. اما ابزاری که برای نوشتن testهایمان از آن استفاده می‌کنیم، یعنی JUnit، یک @Disabled حاشیه‌نویسی ارائه می‌دهد که می‌توان از آن برای نادیده گرفتن موقت یک test از پیش نوشته‌شده استفاده کرد. با استفاده از این حاشیه‌نویسی، مطمئن می‌شویم فایل‌های test که به شما تحویل می‌دهیم این قواعد را رعایت می‌کنند:

  • اولین test در هر فایل test به‌طور پیش‌فرض نادیده گرفته نمی‌شود.
  • همه‌ی testهای هر فایل test، به‌جز test اول، به‌طور پیش‌فرض نادیده گرفته می‌شوند.

این به شما اجازه می‌دهد چرخه‌ی TDD را با دنبال کردن این گام‌های کمی تغییریافته شبیه‌سازی کنید:

  1. testها را اجرا کنید تا مطمئن شوید که در حال حاضر حداکثر یک test شکست می‌خورد.
  2. code فعلی خود را به‌روزرسانی کنید تا همه‌ی testهایی که نادیده گرفته نشده‌اند موفق شوند.
  3. code خود را پاکسازی کنید و مطمئن شوید که همه‌ی testهایی که نادیده گرفته نشده‌اند همچنان موفق می‌شوند.
  4. بالاترین حاشیه‌نویسی @Disabled را در فایل test حذف کنید.
  5. به گام ۱ برگردید تا دیگر هیچ testی نادیده گرفته نشود و همه‌ی testها موفق شوند!
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Java Exercism

آماده‌اید سال کبیسه را شروع کنید؟

در Exercism ثبت‌نام کنید تا Java را همراه با 26 مفهوم158 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.

بررسی عمیق سال کبیسه!

در این ویدیو عمیقاً به الگوریتم‌ها و روش‌های مختلفی می‌پردازیم که می‌توانید با آن‌ها «سال کبیسه» را حل کنید؛ جرمی و اریک در Exercism راه‌حل‌های جامعه را در ۱۰ زبان مختلف بررسی می‌کنند.