نگهبان زمان


این تمرین بیشتر درباره‌ی مدت‌زمان‌هاست، اما می‌توان از آن برای یک تمرین عمومی درباره‌ی زمان هم استفاده کرد.

داستان

سارا یک زمان‌سنج است. در واقع بهترین زمان‌سنج دنیاست. وقتی بچه‌ها از او می‌پرسند کار یک زمان‌سنج چیست، دوست دارد شیشه‌ای پر از شن سفید را به آن‌ها نشان دهد. می‌بینید، می‌گوید: «دارم از زمان مراقبت می‌کنم!»

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

در این تمرین چند تابع برای نرم‌افزار زمان‌سنجی جدیدی می‌نویسید که سارا از شما خواسته برایش بسازید. هیچ اشتباهی مجاز نیست، وگرنه اگر بعداً باگی در نرم‌افزار پیدا شود، ممکن است رکورد جهانی بعدی معتبر نباشد! آماده‌اید این مسئولیت را بپذیرید؟

نکته‌ها

داده‌ای که از سخت‌افزار زمان‌سنجی می‌آید معمولاً یک مهر زمانی است (زمان، datetime یا حتی همراه با منطقه‌ی زمانی). دقت بالایی دارد، معمولاً تا ۱ میلی‌ثانیه و گاهی حتی ۱۰۰ میکروثانیه. هر دستگاه سخت‌افزاری یک ساعت داخلی دارد که باید با همه‌ی دستگاه‌های دیگر همگام‌سازی شود.

کارها

این‌ها نمونه‌کارهایی هستند که با تمرین زمان‌سنج جور درمی‌آیند:

  • تفاضل زمان شروع و پایان را بگیرید تا مدت‌زمان به دست آید.
  • یک دستگاه زمان‌سنجی در منطقه‌ی زمانی دیگری قرار دارد. تفاضل دو زمان با منطقه‌های زمانی متفاوت را محاسبه کنید.
  • یک دستگاه زمان‌سنجی اتصال اینترنت ندارد. برای ۱۰ دونده‌ی اول، یک کمک‌کننده زمان‌های ثبت‌شده را تلفنی برای شما می‌خواند. این زمان‌ها با قالب «10h5m19.234s» وارد می‌شوند که باید تجزیه شود.
  • شروع زودهنگام توسط دوربین فیلم‌برداری پشتیبان ثبت شده است. زمان شروع جدید را با کم کردن یک مدت‌زمان معین از زمان شروع نادرست دوباره محاسبه کنید.
  • در جریان یک رویداد، زمان‌های پرت زیادی تشخیص داده می‌شود. زمان‌سنج برای اینکه بتواند همه‌ی آن زمان‌های «ناخواسته» را نادیده بگیرد، می‌تواند زمان‌های یک دستگاه زمان‌سنجی را فقط در بازه‌ی زمانی مشخصی پس از شروع بپذیرد؛ مثلاً بین ۱۰ دقیقه تا ۳۰ دقیقه پس از شروع. یک تابع فیلتر با ورودی‌های start time (مهر زمانی)، from و to (مدت‌زمان‌ها) و detection (مهر زمانی) بسازید.
  • خروجی یک مدت‌زمان را روی جدول امتیازات با قالب «1h5m19.234s +4.843» قالب‌بندی کنید، که در آن +4.843 تفاضل با صدرنشین (ورزشکار در جایگاه اول) است.

پیاده‌سازی‌ها

  • هنوز هیچ‌کدام

مرتبط