تعدادی تانک در یک صف قرار دارند و برای اینکه تانکی بتواند شلیک کند نباید تانک دیگری در جلوی آن باشد؛ برای حل این مشکل از آرایشهای جنگی استفاده میکنیم. به عنوان فرمانده، تانکهای خود را طوری آرایش دهید که با کمترین جابهجایی در موقعیت مناسب قرار گیرند.
در خط اول ورودی، میآید که بیانگر تعداد تانکهاست. سپس در خط بعد، مختصات تانک به ترتیب به صورت دنبالهای از ها میآید.
در خروجی، مقدار جابهجایی هر تانک را به ترتیب در خطوط جداگانه چاپ کنید.
مجموع این جابهجاییها ۴۲ متر است و به همین صورت مجموع جابهجاییهای آرایش دوم، برابر ۵۰ میشود؛ بنابراین آرایش اول را بهعنوان جواب انتخاب میکنیم.
در صورتی که آرایش اول را انتخاب کنیم، باید تانکها را به ترتیب ۰، ۲-، ۱۵-، ۲۲- و ۲۷- متر جابهجا کنیم؛ اما اگر آرایش دوم را انتخاب کنیم، باید تانکها را به ترتیب ۰، ۴+، ۳-، ۴- و ۳- متر جابهجا کنیم؛
مجموع جابهجاییها در آرایش اول برابر با ۶۶ و در آرایش دوم برابر با ۱۴ میشود؛ بنابراین آرایش دوم را به عنوان جواب انتخاب میکنیم.
تعدادی جنگنده در یک صف هستند و ارتفاع تمام آنها از زمین متمایز است. هر جنگنده تنها میتواند جنگندههای جلویی خود را هدف قرار دهد، با این شرط که ارتفاعشان از آن کمتر باشد.
تعداد جنگندههایی را که یک جنگنده میتواند مورد هدف قرار دهد، عدد استراتژیک مینامیم. به عنوان مثال اگر جنگنده الف بتواند ۳ جنگنده را مورد هدف قرار دهد، میگوییم عدد استراتژیک جنگنده الف برابر با ۳ است.
مجموع اعداد استراتژیک تمام جنگندهها را بدست آورید.
در خط اول ورودی، میآید که بیانگر تعداد جنگندههاست. سپس در خط بعد، ارتفاع جنگنده به ترتیب به صورت دنبالهای از ها میآید.
در خروجی، مجموع اعداد استراتژیک تمام جنگندهها را چاپ کنید.
اولین جنگنده با ارتفاع ۵ از همه عقبتر است و امکان شلیک به جنگنده دوم و سوم را دارد. در نتیجه عدد استراتژیک آن ۲ است. جنگنده دوم میتواند جنگنده سوم را هدف قرار دهد و عدد استراتژیک آن ۱ است. جنگنده سوم امکان شلیک به جنگنده چهارم و پنجم را به دلیل ارتفاع کمتر ندارد و عدد استراتژیک آن ۰ است. به همین صورت عدد استراتژیک جنگنده چهارم، ۱ و جنگنده پنجم، ۰ است. در نتیجه مجموع اعداد استراتژیک جنگندهها برابر ۴ خواهد بود.
در یک بازی مدیریت شهری، باید ۳ ساختمان را به شکلی مدیریت کنید که مصرف برق آنها به بهینهترین حالت ممکن برسد. برای فهمیدن این موضوع، داور بازی در هر مرحله کار انجام میدهد تا تعداد امتیازهای منفی را محاسبه کند. این کارها یکی از دو نوع زیر میباشند:
در خط اول ورودی عدد به عنوان تعداد واحدهای سه ساختمان و به عنوان تعداد کارهایی که داور انجام میدهد داده میشوند.
در ادامه در سه خط سه دنباله به طول به ترتیب به عنوان مصرف برق واحدهای ساختمان و و داده میشود.
در ادامه در خط کارهای داور میآیند که به قالب زیر هستند:
CHANGE(k,x) := عنصر ام در دنبالۀ اول به تغییر میکند
PRINT(r) := کار نوع دوم است که در جوابش یک عدد (امتیازهایی که به بازیکن میدهد) باید بدهید
به ازای هر پرسش نوع دوم، مقدار عددی خروجی را چاپ کنید.
یک بازی تیراندازی اولشخص را تصور کنید؛ در این بازی انواع سلاح وجود دارد و هر سلاح نام، برد، قدرت و اندازۀ گلولۀ منحصربهفردی دارد. از طرفی گلولهها نیز اندازه و آسیب منحصربهفردی دارند که در ادامه آمده است.
نام | برد | قدرت | اندازۀ گلوله |
---|---|---|---|
Submachine Gun | 100 | 10 | 0.5 |
Assault Rifle | 200 | 20 | 1 |
Pistol | 80 | 8 | 0.5 |
Shotgun | 50 | 40 | 4 |
Sniper Rifle | 1000 | 30 | 3 |
نام | اندازه | آسیب |
---|---|---|
A | 0.5 | 1 |
B | 1 | 1.5 |
C | 3 | 3 |
D | 4 | 2 |
پروژه اولیه را از این لینک دانلود کنید.
با توجه به انواع سلاحها و گلولهها یک کلاس ایجاد کنید که Interface
زیر را پیادهسازی کند:
در بالا، به ترتیب سه متد انتخاب سلاح، اضافهکردن گلوله و شلیک به هدف تعریف شدهاند که به توضیح آنها میپردازیم:
متد انتخاب سلاح با توجه به ورودی، یک سلاح را انتخاب میکند تا در ادامه از آن استفاده شود.
Exception
پرتاب شود.submachine gun
نداریم.متد انتخاب گلوله، گلولههایی را با اندازه و تعداد دادهشده به سلاح اضافه میکند.
Exception
پرتاب شود:متد شلیک به هدف، پارامترهای مختصات هدف، فاصله تا آن و مختصات نقطهای که سلاح به آن اشاره میکند را از ورودی دریافت میکند و در خروجی، با استفاده از فرمولی که در ادامه میآید، میزان آسیبی که به هدف میرسد را برمیگرداند.
Exception
پرتاب شود.Shooter.java
هستید. تغییرات در باقی فایلها نادیده گرفته میشود.یک بازی تیراندازی اولشخص را تصور کنید؛ در این بازی انواع سلاح وجود دارد و هر سلاح نام، برد، قدرت و اندازۀ گلولۀ منحصربهفردی دارد. از طرفی گلولهها نیز اندازه و آسیب منحصربهفردی دارند که در ادامه آمده است.
نام | برد | قدرت | اندازۀ گلوله |
---|---|---|---|
Submachine Gun | 100 | 10 | 0.5 |
Assault Rifle | 200 | 20 | 1 |
Pistol | 80 | 8 | 0.5 |
Shotgun | 50 | 40 | 4 |
Sniper Rifle | 1000 | 30 | 3 |
نام | اندازه | آسیب |
---|---|---|
A | 0.5 | 1 |
B | 1 | 1.5 |
C | 3 | 3 |
D | 4 | 2 |
پروژه اولیه را از این لینک دانلود کنید.
با توجه به انواع سلاحها و گلولهها کلاس زیر را پیادهسازی کند:
در بالا، به ترتیب سه متد انتخاب سلاح، اضافهکردن گلوله و شلیک به هدف تعریف شدهاند که به توضیح آنها میپردازیم:
متد انتخاب سلاح با توجه به ورودی، یک سلاح را انتخاب میکند تا در ادامه از آن استفاده شود.
Exception
پرتاب شود.submachine gun
نداریم.متد انتخاب گلوله، گلولههایی را با اندازه و تعداد دادهشده به سلاح اضافه میکند.
Exception
پرتاب شود:متد شلیک به هدف، پارامترهای مختصات هدف، فاصله تا آن و مختصات نقطهای که سلاح به آن اشاره میکند را از ورودی دریافت میکند و در خروجی، با استفاده از فرمولی که در ادامه میآید، میزان آسیبی که به هدف میرسد را برمیگرداند.
Exception
پرتاب شود.Shooter.py
هستید. تغییرات در باقی فایلها نادیده گرفته میشود.میخواهیم یک بازی کیکپزی بسازیم که در آن یک کیک ساده با اندازۀ مشخص به بازیکن داده میشود و او باید با انجام دستورالعمل برنامهریزی شده، کیک نهایی را تحویل دهد.
کیک اولیه را که مستطیلی با ارتفاع height
و طول width
از هاست، با توجه به دستورالعمل میپزد و آن را چاپ میکند.
با اجرای دستور زیر:
کیک اولیه، به این شکل خواهد شد:
در ابتدای برنامه دستورالعمل خالی است. در نتیجه با اجرای فرمان پختن کیک، همان کیک اولیه خروجی داده میشود. با اجرای فرمانهای زیر میتوانیم به دستورالعمل، عملیات اضافه کنیم. حال اگر فرمان پخت کیک صادر شد، عملیاتهای افزوده شده به ترتیب روی کیک اولیه اجرا میشوند.
به بالا و طرفین آخرین طبقه کیک خامه (C
) اضافه و عبارت Done
را در خروجی چاپ میکند.
اگر کیک به این شکل باشد:
پس از انجام عملیات، به این شکل خواهد شد:
قسمتهایِ موردِ نظرِ آخرینِ طبقۀ کیک را به طعم مشخصشده آغشته و عبارت Done
را در خروجی چاپ میکند.
flavor
میتواند شکلات (K
)، توت فرنگی (S
) یا موز (B
) باشد.
where
میتواند بالا (TOP
) یا طرفین (SIDES
) باشد.
اگر کیک به این شکل باشد:
با اجرای دستور زیر:
به این شکل خواهد شد:
یک طبقه را با ابعاد کیک اولیه، بر روی کیک فعلی قرار میدهد و عبارت Done
را در خروجی چاپ میکند.
اگر کیک اولیه ارتفاع ۲ و طول ۴ داشته و کیک فعلی به شکل زیر باشد:
به این شکل خواهد شد:
با اجرای این دستور، برنامه پایان مییابد.
اگر کیک اولیه ارتفاع ۲ و طول ۳ داشته و کیک فعلی به شکل زیر باشد:
با اجرای ادامه دستوالعمل به شکل زیر ممکن است بشود:
در هر خط ورودی، یکی از دستوراتی که در بالا توضیح داده شد، میآید. برنامه با دستور END
خاتمه مییابد.
با توجه به توضیحات بالا، به ازای هر دستور، خروجی مورد نظر را چاپ کنید.