دنباله فیبوناچی دنبالهای معروف است که به صورت زیر تعریف میشود.
حال، برنامهای بنویسید که با ورودی گرفتن یک عدد طبیعی یک رشته مانند
از علامت های +
و -
را چاپ کنید به طوری که مثبت باشد اگر و تنها اگر عدد جزو دنباله فیبوناچی باشد. برای فهم بهتر به مثالها توجه کنید.
ورودی تنها شامل یک خط است که در آن یک عدد طبیعی آمده است.
در تنها سطر خروجی یک رشته به طول که پاسخ مسئله است را چاپ کنید.
در هر خانه از یک جدول در یک دومینوی ایستاده قرار داده شده است. هر دومینو یا عمودی است یا افقی (دومینوهای عمودی فقط در جهت بالا یا پایین میافتد و دومینوهای افقی فقط در جهت چپ یا راست). وقتی یک دومینو در یک جهت میافتد دومینوی موجود در خانهی بعدی (در همان جهت) نیز اگر از نظر عمودی و افقی بودن مانند این دومینو باشد میافتد (دومینوها فقط در شرایط گفته شده بر روی دومینوهای دیگر تاثیر میگذارند).
میخواهیم تعدادی دومینو را بیاندازیم به طوری که همهی دومینوها بیافتند. حداقل چند دومینو را باید بیاندازیم؟
در خط اول ورودی دو عدد و آمده است که تعداد سطرها و ستونهای جدول را نشان میدهند.
در خط بعدی در هر خط، کاراکتر آمده که هر کدام نشان دهندهی وضعیت یک دومینو است (|
برای دومینوهای افقی و -
برای دومینوهای عمودی)
جواب مسئله را در یک خط چاپ کنید.
در ورودی نمونه سه دومینوی واقع در ستون اول را به سمت راست و دومینوی واقع در ستون سوم و سطر دوم را به سمت پایین میاندازیم.
از شما خواسته شده است طبق توضیحات زیر، یک پیادهسازی مقدماتی از سامانه ثبت نسخه دارویی را به زبان جاوا انجام دهید. ابتدا بستهی ir.nimbo را دانلود کرده و محتوای آن را ببینید.
این سامانه دو هدف اصلی دارد. ثبت نسخه به صورت اینترنتی و جستوجوی دارو
تلاش کنید برنامهی خود را تمیز و اصولی پیادهسازی کنید.
برای این منظور در کلاس DrugRepository
به عنوان مخزن داروها (Drug
)، دو متد برای جستوجو در بین داروها قرار دارد که شما باید آنها را پیادهسازی کنید:
findDrugByExactName
: در بین داروهای موجود در مخزن جستوجو میکند و دارویی که نامش دقیقا برابر با پارامتر ورودی است را بر میگرداند. (کوچک و بزرگ بودن حروف مهم است).search
: زمانی که نام دارویی را به صورت دقیق نمیدانیم و تنها بخشی از نام دارو را میدانیم، از این متد میتوان برای پیدا کردن نام دقیق دارو استفاده کرد. به این صورت که بخشهایی از نام دارو را که نمیدانیم، به جایش علامت %
میگذاریم. مثلا اگر بدانیم نام داروی مورد نظر ما شامل رشتهی phen
میباشد و ابتدا یا انتهاش ممکن است حروف دیگری هم وجود داشته باشد، پارامتر ورودی متد را به صورت %phen%
وارد میکنیم. خروجی این متد، یک لیست شامل نام کلیهی داروهایی خواهد بود که با رشتهی ورودی مطابقت دارند (کوچک و بزرگ بودن حروف مهم نیست).به این منظور، دو سرویس زیر باید پیادهسازی شوند. این سرویسها در کلاس PrescriptionService
قرار دارند و به صورت زیر باید عمل کنند:
۱. سرویس primaryRegisteration
:
با ثبت نسخه (Prescription
) و ارایهی یک موقعیت مکانی (Location
) دلخواه به برنامه، نزدیکترین داروخانه (Pharmacy
) به آن موقعیت مکانی که تمامی آیتمهای موجود (PrescriptionItem
) در آن نسخه را دارد (موجودی داروخانه باید بیشتر یا مساوی تعداد داروی مورد نظر باشد)، پیدا کرده و برگرداند.
Prescription is expired.
No Pharmacy Found. Try Later...
LocationService
در اختیارتان قرار داده خواهد شد و با فراخوانی متد distance
از آن، میتوانید مقدار فاصله بین دو موقعیت مکانی را بدست آورید.۲. سرویس finalRegisteration
:
این سرویس با گرفتن یک داروخانه و یک نسخه در پارامترهای ورودی، باید موجودی داروهای موجود در نسخه را در آن داروخانه بهروز کند:
نسخه (Prescription):
PrescriptionItem
) است که نام و تعداد هر آیتم در آن ذکر شده است.مخزن دارو (DrugRepository):
getInstance
برگردانده شود.داروخانه (Pharmacy):
inventory
) مشخص است.addDrug
باید بتوان یک دارو با مقدار موجودی مورد نظر را به لیست داروهای داروخانه (drugs) اضافه کرد (شما پیادهسازی کنید). دارویی که همچنان در داروخانه موجود است، به عنوان پارامتر به این متد داده نمیشود.removeDrug
باید بتوان یک دارو را از لیست داروهای داروخانه حذف کرد (شما پیادهسازی کنید).getDrugInventory
باید بتوان مقدار موجودی دارویی که در پارامتر ورودی داده شده است را به دست آورد (شما پیادهسازی کنید).getDrugCount
تعداد کل داروهای موجود در داروخانه به دست میآید (شما پیادهسازی کنید). دارو (Drug):
basePrice
) است.InsuredDrug
و UninsurdDrug
، متد getPrice
باید به گونهای پیادهسازی شود که قیمت داروهای تحت پوشش بیمه، ۳۰% کمتر محاسبه شود و قیمت داروهای آزاد، بدون تغییر و برابر با basePrice
باشد.نکته:
Parameterized Constructor
) دارند، نباید سازندهی دیگری اضافه شود. مثال:
فایل Program.java را دانلود کرده و در کنار فایلهایی که پیادهسازی کردهاید قرار داده و اجرا کنید. با اجرای آن، باید خروجی زیر در کنسول چاپ شود:
دقت کنید در این مثال، هدف تنها اجرای finalRegisteration
بوده است، بنابراین از یک پیادهسازی سادهلوحانه و غیرواقعی از LocationService
استفاده شده است.
آنچه باید آپلود کنید: یک فایل زیپ شامل بستهی ir.nimbo است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی ir را ببینیم که درون آن شاخهی nimbo قرار دارد. در داخل شاخهی nimbo هفت فایل زیر باید وجود داشته باشد:
UninsurdDrug.java InsuredDrug.java Drug.java DrugRepository.java Pharmacy.java Prescription.java PrescriptionService.java
آرایهای با عدد داریم. تابع را در نظر بگیرید:
حال عدد از روی این عدد به این شکل میسازیم که به ازای هر سهتایی مرتب (نه لزوماً متمایز) آن را در تابع جاگذاری میکنیم و عدد حاصل را برمیداریم. میانگین، میانه و تعداد دفعات ظاهر شدن مُد بین این عدد را چاپ کنید.
میانهی عدد برابر اُمین آنها در ترتیب مرتبشده است.
مُد برابر عددیست که بیشترین بار ظاهر شده است.
به علت محدودیت حافظه، همه اعداد را نمیتوانید در حافظه داشته باشید. نمرهدهی سوال به این صورت است که نیازی نیست جواب دقیق را به دست آورید. هر چقدر جواب نزدیکتری به جواب دقیق پیدا کنید امتیاز بیشتری میگیرید.
در خط اول ورودی آمده است. اعداد ورودی کمتر مساوی اند.
میانگین، میانه و تعداد دفعات ظاهر شدن مُد اعداد را چاپ کنید.
اعداد ساخته شده:
میانگین این اعداد برابر ۱۴ و میانه برابر ۱۳ و مد برابر ۳ است. تعداد دفعات ظاهر شدن مد برابر ۱ است.
به تازگی شرکت سحاب یک مسابقه برنامه نویسی برگزار کرده است. این مسابقه روز طول میکشد زمان شروع مسابقه روز اول است و زمان پایان مسابقه روز ام است. در زمان برگزاری مسابقه تعدادی رویداد گزارش شده است. هر رویداد نشان میدهد که یک شرکت کننده به صفحه مسابقه وارد شده است. این رویداد به صورت کلی زیر به شما داده میشود.
همه این اطلاعات به شما داده میشود و از شما خواسته میشود برای هر روز یک گزارش بدهید. گزارش شما شامل سه عدد است:
از شما خواسته میشود برای هر روز این گزارشها را به دست آورید.
در اولین سطر ورودی دو عدد طبیعی و به شما داده میشود که به ترتیب نشان دهنده تعداد رویدادهای مسابقه است و تعداد روزهای برگزاری مسابقه است. در سطر بعدی در هر سطر یک خط به صورت زیر داده میشود. که یک عدد طبیعی از تا است. نشان دهنده لحظه آن رویداد است و یک رشته حداکثر ۱۰ حرفی از حروف کوچک انگلیسی است که نشان دهنده نام شرکت کننده است. به طور مثال یک رویداد به صورت زیر است. تضمین میشود که ترتیب رویدادها به ترتیب زمان به شما داده میشود.
خروجی برنامه شما شامل خط است و خط ام نشان دهنده گزارش شما برای روز ام است. در هر خط سه عدد صحیح با یک فاصله از هم چاپ کنید که عدد اول نشان دهنده تعداد افرادی که آن روز وارد مسابقه شده اند و عدد دوم نشان دهنده تعداد افرادی که برای اولین بار وارد مسابقه شده اند و عدد سوم نشان دهنده تعداد افرادی که برای آخرین بار وارد مسابقه شده اند.
روز اول:
دو شرکت کننده به نامهای mohammad
و alireza
وارد مسابقه شده اند.
دو شرکت کننده به نامهای mohammad
و alireza
برای اولین بار وارد مسابقه شده اند.
یک شرکت کننده به نام mohammad
آخرین باری است که وارد مسابقه میشود.
روز دوم:
دو شرکت کننده به نامهای maryam
و alireza
وارد مسابقه شده اند.
یک شرکت کننده به نام maryam
برای اولین بار وارد مسابقه شده اند.
دو شرکت کننده به نامهای maryam
و alireza
آخرین باری است که وارد مسابقه میشود.
در ابتدا صف خالی داریم. در هر مرحله،
در خط اول ورودی دو عدد و آمده است که تعداد صفها و تعداد اتفاقات را نشان میدهد.
در خط بعدی در هر خط،
یعنی به انتهای همهی صفها اضافه میشود.
از ابتدای صف اُم، عنصر حذف میشود. تضمین میشود حداقل صفر و حداکثر به اندازهی طول فعلی صف است.
به ازای هر اتفاق از نوع دوم عدد خواسته شده را چاپ کنید.
۲ صف داریم و ۵ اتفاق میافتد:
پوشهای در کامپیوتر داریم که هر چند وقت یک بار تصاویر و فیلمهای گوشی را به آن انتقال دادهایم. مدت زیادی گذشته و این پوشه شدیداً به هم ریخته است. فایلها دستهبندی مشخصی ندارند و پوشهبندی موجود کاملاً بیمعنی است، فایلهای دیگری نیز در بین این فایلها وجود دارد که تصویر یا فیلم نیستند.
از شما میخواهیم یک اسکریپت Bash با نام organize.sh
بنویسید که به این
وضعیت سر و سامان دهد.
نحوه اجرای اسکریپت به این صورت است:
اسکریپت باید تصاویر و فیلمها را طبق قواعد زیر در پوشه مقصد کپی کند.
photos
و فیلمهای
آن سال باید در پوشهای به نام videos
قرار بگیرند. jpg, jpeg, png
mp4, avi, 3gp, mpeg, mkv, wmv, mov
وضعیت پوشه اول: (در این مثال فرض کنید زمان modification فایلها همان زمانی است که در نام فایل آمده است.)
وضعیت پوشه مقصد پس از اجرای اسکریپت:
organize.sh
را آپلود کنید.در یک ایستگاه تاکسیرانی تعدادی تاکسی وجود دارد. هر تاکسی ظرفیت چهار مسافر را دارد تعدادی مسافر به این ایستگاه تاکسیرانی مراجعه میکنند و میخواهیم همه این مسافرها را در تاکسیها بنشانیم هر کدام از این مسافرها سه حالت دارند: زن، مرد و معتاد. توجه کنید مرد یا زن بودن معتادها اهمیتی ندارد.
میدانیم در یک تاکسی یک صندلی کنار راننده و سه صندلی در عقب قرار دارد و دو نفر که صندلیشان کنار هم باشد مجاور یکدیگرند (مسافری که روی صندلی کنار راننده مینشیند با هیچ کس مجاور نیست و مسافری که روی صندلی وسط در ردیف عقب مینشیند با دو نفر کناری خود مجاور است و دو نفری که در کنار درهای عقب مینشینند تنها با نفر وسط مجاورند).
میخواهیم مسافرها را طوری در این تاکسیها قرار دهیم. که مجموع کل ناراحتیها کمینه باشد. این چیدمان را چاپ کنید.
برای نشان دادن یک زن از
W
، یک مرد از
M
، یک معتاد از
A
و راننده از
D
استفاده میکنیم.
ورودی تنها شامل یک خط است که در آن چهار عدد طبیعی و و و با فاصله از هم آمده است و به ترتیب تعداد مردها، زنها، معتادها و تاکسیها را نشان میدهد. تضمین می شود که وقتی مردها و زن ها و معتاد ها در تاکسی ها بنشینند صندلی خالی وجود نخواهد داشت.
خروجی شامل جدول دو در سه است. که جدولها با سطرهای خالی از هم جدا شده اند. اگر چند روش صحیح وجود دارد یک روش را به دلخواه چاپ کنید.
در این حالت مجموع کل ناراحتیها برابر ۱ است.
در این حالت مجموع کل ناراحتیها برابر ۲ است.
در این حالت مجموع کل ناراحتیها برابر صفر است.
تعدادی پردازش و تعدادی پردازشگر داریم (پردازشها با شمارههای تا و پردازشگرها با شمارههای تا شماره گذاری شدهاند). پردازش به ثانیه زمان نیاز دارد تا انجام شود و یک مجموعه از پردازشهای پیشنیاز دارد. میخواهیم برای انجام هر پردازش یک زمان برای انجام شدن و یکی از پردازشگرها انتخاب کنیم تا در آن زمان آن پردازش را به آن پردازشگر مشخص شده اختصاص بدهیم. اگر یکی از پیشنیازهای یک پردازش پیش از اختصاص آن به پردازشگرش انجام نشده باشند، به اندازهی مشخصی (وابسته به پردازش و پیشنیاز) به زمان انجام آن پردازش اضافه میشود (نیاز به مقداری محاسبات اضافی دارد).
میخواهیم طوری پردازشها را در زمان بین پردازشگرها پخش کنیم که مجموع زمان پایانهای پردازشها کمینه شود. هر پردازش باید در یک بازه پشتسرهم از زمان در یکی از پردازشگرها انجام شود و هر یک از پردازشگرها در هر لحظه حداکثر یک پردازش را انجام میدهند.
در خط اول ورودی دو عدد و آمده است که تعداد پردازشگرها و پردازشها را نشان میدهند.
در خط بعدی عدد آمده که امین عدد نشان دهندهی زمانی که برای انجام پردازش نیاز است.
در خط بعدی یک عدد آمده است که نشان دهندهی تعداد روابط پیشنیازی بین پردازشهاست.
در خط بعدی در هر خط سه عدد و و آمده است که نشان میدهد پردازش پیشنیاز پردازش است و در صورت رعایت نشدن این پیشنیازی پردازش ، ثانیه بیشتر طول میکشد.
خروجی باید شامل خط باشد که در خط ام از آن دو عدد و آمده است که نشان میدهند پردازش ام در لحظهی به پردازشگر اختصاص داده میشود.
هرچه مجموع زمان پایان پردازشها کمتر باشد کد شما نمرهی بهتری دریافت میکند. در صورت غیرقابل انجام بودن خروجی نمرهای دریافت نمیکنید (اختصاص دادن یک پردازش به پردازشگری که در حال پردازش کردن است).
برای ورودی نمونه خروجی داده شده بهترین خروجی است (مجموع زمان پایانها ) ولی برای مثال خروجیهای زیر نیز قابل قبول است.
*مجموع زمان پایانها *
*مجموع زمان پایانها *