سلیب در میان تمرینات تیمی خود برای آمادگی، از شلوغی برنامه روزانه خود و تعداد زیاد جلساتش خسته شده بود و داشت حسابی اذیت میشد. او اخیرا بسیاری از جلسات خود را فراموش میکرد. برای همین از تیم جدا شد و تصمیم گرفت به عنوان تمرین چهارم، با کمک شما ابزاری جهت تنظیم آسانتر جلسات خود بنویسد. او میخواهد ابزاری داشته باشد که با تعامل با آن بتواند اطلاعاتی از روز خود دریافت کند و یا جلسهای به روز خود اضافه کند. ابزار او باید پشتیبانی از ۵ حالت زیر را داشته باشد:
اضافه کردن جلسه
برای این کار از دستور زیر استفاده میکنیم:
پس از افزوده شدن جلسه مورد نظر، برنامه شما باید مقدار زیر را خروجی دهد:
برای مثال دستور زیر به معنای افزودن یک جلسه از ساعت ۱۰ صبح تا ساعت ۳ یا همان ۱۵ بعدازظهر است. توجه داشته باشید که ساعت راس ساعت ۱۵ جلسه تمام میشود و سلیب میتواند بدون تداخل، جلسهای دیگر را از ساعت ۱۵ شروع کند.
پس از افزوده شدن جلسه بالا، برنامه شما باید مقدار زیر را خروجی دهد:
- تضمین میشود که ساعت شروع و پایان جلسات، اعدادی بین ۰ تا ۲۴ هستند. همچنین تضمین میشود که ساعت پایان یک جلسه، حداقل یک ساعت پس از شروع جلسه میباشد. تضمین آخر نیز این است که هیچگاه تداخلی بین جلسات پیش نمیآید و در هر زمان فقط یک جلسه خواهیم داشت.
چک کردن ساعات روز
فرض کنید میخواهیم بدانیم که آیا مثلا سلیب میتواند از ساعت ۵ تا ۱۰ جلسهای داشته باشد یا خیر. برای این کار از دستور زیر استفاده میکنیم:
در این حالت، برنامه شما با دو حالت مواجه میشود:
- بازه زمانی مورد نظر به طور کامل خالی باشد که در این صورت برنامه شما باید در قالب زیر به سلیب بگوید که میتواند درون بازه مورد نظر جلسهای داشته باشد:
- تمام بازه و یا بخشی از بازه زمانی مورد نظر پر باشد که در این صورت برنامه شما باید در قالب زیر به سلیب بگوید که نمیتواند درون بازه مورد نظر جلسهای داشته باشد:
برای مثال فرض کنید به ترتیب، دستورات زیر را به برنامه شما ورودی بدهیم:
پس از افزوده شدن جلسه بالا، برنامه شما باید مقدار زیر را خروجی دهد:
آزاد کردن ساعات روز
فرض کنید جلسهای کنسل شده و یا کار فوری پیش آمده و ما میخواهیم از ساعت ۵ تا ۱۰ روز سلیب را آزاد کنیم. برای این کار از دستور زیر استفاده میکنیم:
پس از افزوده شدن جلسه مورد نظر، برنامه شما باید مقدار زیر را خروجی دهد:
برای مثال فرض کنید به ترتیب، دستورات زیر را به برنامه شما ورودی بدهیم:
پس از افزوده شدن جلسه بالا، برنامه شما باید مقدار زیر را خروجی دهد:
- دقت کنید که پس از آزاد کردن زمان از ساعت ۹ تا ساعت ۱۲، جلسهی اول که از ساعت ۱۰ تا ساعت ۱۵ ایجاد شده بود بهطور کلی کنسل نمیشود و فقط زمان ۱۰ تا ۱۲ آن کنسل میشود؛ اما از ۱۲ تا ۱۵، جلسه برقرار است.
دستور اشتباه
اگر دستوری به جز سه دستور بیانشده به برنامه شما ورودی داده شود، باید خروجی زیر را نمایش دهید:
برای مثال فرض کنید به ترتیب، دستورات زیر را به برنامه شما ورودی بدهیم:
پس از افزوده شدن جلسه بالا، برنامه شما باید مقدار زیر را خروجی دهد:
خروج از برنامه
برای خروج از برنامه از دستور زیر استفاده میکنیم:
در این صورت باید پیش از بسته شدن برنامه، خروجی زیر را چاپ کنید:
و سپس برنامه را ببندید.
مثال
برای مثال اگر اسکریپت شما را مانند زیر اجرا کنیم:
باید خروجی زیر را دهد:
پروژه اولیه
برای دریافت پروژه اولیه این لینک را دانلود کنید. درون لینک ساختار فایلی زیر را مشاهده میکنید:
راهحل خود را درون فایل checker.sh
پیادهسازی کنید. برای اطمینان نسبی از پاسختان میتوانید از تستهای نمونه مسئله استفاده کنید. اگر میخواهید درون سیستم خودتان از این تستها استفاده کنید، با ترمینال به دایرکتوری Busy_SAliB
بروید و سپس دستورات زیر را اجرا کنید:
و یا از طریق دکمه «اجرای تست نمونه» پاسختان را برای کوئرا ارسال کنید.
توجه کنید
- فراموش نکنید که اسکریپتی کامل را در پاسختان تحویل دهید.
- فراموش نکنید که اسکریپت خود را درون فایلی با نام
checker.sh
وارد نمایید. - برای ارسال پاسخ خود کافیست فایل
checker.sh
را آپلود کنید. - راس ساعت پایان، جلسه تمام میشود و سلیب میتواند بدون تداخل، جلسهای دیگر را از ساعت آن ساعت شروع کند.
- تضمین میشود که ساعت شروع و پایان جلسات، اعدادی بین ۰ تا ۲۴ هستند. همچنین تضمین میشود که ساعت پایان یک جلسه، حداقل یک ساعت پس از شروع جلسه میباشد. تضمین آخر نیز این است که هیچگاه تداخلی بین جلسات پیش نمیآید و در هر زمان فقط یک جلسه خواهیم داشت.
ارسال پاسخ برای این سؤال