در این مسئله برای آشنایی بیشتر شما با سیستم داوری جاوا کوئرا، مسئلهای ساده تهیه کردهایم. در این مسئله تنها کاری که باید انجام دهید پیاده سازی یک تابع برای سلام کردن به کدکاپ است! البته با این کد شما به تمامی کدکاپهای گذشته حال و اینده کوئرا تا ابد سلام میکنید ^_^ در ادامه با جزئیات بیشتر مسئله آشنا میشویم.
پروژهی اولیه را از این لینک دانلود کنید.
ساختار فایلهای پروژه بهصورت زیر است:
شما باید تابع sayHelloToCodeCup
موجود در فایل HelloCodeCup.java
را مطابق با خواست مسئله پیادهسازی کنید. امضای تابع مورد نظر به شکل زیر است:
sayHelloToCodeCup
:🔗این تابع یک عدد به با نام n
به عنوان ورودی دریافت میکند و در خروجی رشتهای به فرمت زیر باز میگرداند.
به چند خروجی این تابع دقت کنید:
پس از پیادهسازی موارد خواستهشده، فایل HelloCodeCup.java
را آپلود کنید.
در فایل RepeatInString.java
یک کلاس به نام RepeatInString
وجود دارد که یک متد خالی با نام StringInString
و به صورت زیر دارد:
همانطور که مشخص است، این متد دو رشته به عنوان ورودی میگیرد. شما باید این متد را به نحوی کامل کنید که تعداد دفعات تکرار رشتهی دوم در رشتهی اول را بیابد و به عنوان خروجی برگرداند. به نمونه ورودی و خروجیهایی که در زیر آورده شده توجه کنید.
فقط فایل RepeatInString.java
را به صورت زیپشده آپلود کنید. یعنی وقتی فایل زیپ را باز میکنیم، فقط فایل RepeatInString.java
را ببینیم.
ساختار درختی فایل ارسالی:
در این سوال برای سادهتر کردن مدیریت خطاها و مرتب کردن استثناها میخواهیم تمام خطاهایی که رخ میدهد
را با یک قرارداد واحد در کلاسی به نام ExceptionProxy
ذخیره کنیم.
برای این کار به ازای هر خطایی که رخ میدهد یک شی از کلاس ExceptionProxy
میسازیم که دارای دو
خصوصیت است.
این خصوصیات عبارتند از ( e
یک شی از کلاس ExceptionProxy
است):
e.msg
e.function
فایل Solution.java را دانلود کرده و محتوای آن را ببینید.
از شما میخواهیم متد transformException()
را پیادهسازی کنید. این متد یک لیست از توابع ورودی میگیرد. سپس هر کدام از توابع را صدا میکند (توابع بدون آرگومان هستند) و استثناهایی که رخ میدهد را با قرارداد بالا
به شیای از ExceptionProxy
تبدیل کرده و در نهایت لیست خطاهای تبدیلشده را به همان ترتیب توابع
بر میگرداند. دقت کنید که اگر تابعی بدون خطا اجرا شد باید یک شی ExceptionProxy
ساخته و مقدار msg
آن را با "OK!"
مقداردهی کنید.
با اجرای متد main
در کلاس Solution
خروجی زیر باید در کنسول چاپ شود:
یک فایل zip که وقتی آن را باز میکنیم، فقط فایل Solution.java را ببینیم.
در کارت گرافیک برای بالا بردن سرعت، پردازش بخشهای مختلف به صورت موازی انجام میشود. این پردازشها
را میتوان به شکل یک درخت نشان داد. در این سوال به پردازش درختی از توابع میپردازیم.
به شما یک درخت دودویی از توابع به شکل زیر داده می شود.
هر یال جهتدار به این معناست که تابعی که یال از آن خارج شده باید قبل از تابعی که یال به آن وارد شده
محاسبه شود. (یا میتوان گفت تابع دوم برای انجام محاسباتش نیاز به خروجی تابع اول دارد). توابع در سه لیست
fs
و gs
و hs
از طریق کلاس Functions
به شما داده میشوند (برای مثال، f[0]
همان است). در ضمن توجه داشته باشید که تمام توابع بدون آرگومان ورودی هستند.
فایل Source را دانلود کرده و محتوای آن را ببینید و متد solve
را مطابق با توضیحات زیر پیادهسازی کنید.
شما باید این درخت را به ترتیب زیر پردازش کنید:
دقت کنید که محاسبات هر مرحله (هر طبقه درخت) باید به صورت همزمان انجام شود. (برای مثال و باید همزمان محاسبه شوند).
با اجرای متد main
از کلاس Main
خروجی زیر یکی خروجیهای صحیح محتمل است.
توجه داشته باشید که تمامی F
ها قبل از G
ها و تمامی G
ها قبل از H
ها چاپ میشود.
یک فایل zip که وقتی آن را باز میکنیم، فقط فایل ThreadSolution.java را ببینیم.
تیم انبوهفروشان مشرقزمین قصد دارد سامانهای تحتوب برای مدیریت آسانتر فروشگاهشان راهاندازی کند. آنها تصمیم گرفتهاند تا وبسرویسشان را با استفاده از Spring Boot پیادهسازی کنند. نیازمندیها از قبل بهطور دقیق مشخص شدهاند، اما هنوز برنامهنویسی به تیم آنها اضافه نشده است. از شما میخواهیم تا نسخهی اولیهی این وبسرویس را پیادهسازی کنید.
پروژهی اولیه را از این لینک دانلود کنید.
ir.digipay.bulkshop
شامل موجودیتهای JPA برنامه است که مطابق با schema دیتابیس طراحی شدهاند. شناسه (id
) موجودیتها بهصورت خودکار توسط Hibernate تولید میشود.CustomerEntity
: از این کلاس برای نگهداری اطلاعات هر مشتری استفاده میشود.ProductEntity
: از این کلاس برای نگهداری اطلاعات هر محصول استفاده میشود.OrderEntity
: از این کلاس برای نگهداری اطلاعات هر سفارش استفاده میشود.ir.digipay.bulkshop.api
شامل کلاسهایی برای مدیریت ورودیها و خروجیهای API است.ir.digipay.bulkshop.rest
شامل REST controller های برنامه است. کنترلر مربوط به آدرس /
برای تست برنامه در کلاس IndexRestEnpoint
پیادهسازی شده است. سایر کنترلرها را در این بسته پیادهسازی کنید.تعدادی وبسرویس REST مطابق نیازمندیهای زیر باید پیادهسازی شود:
آدرس | عنوان |
---|---|
GET /api/products |
دریافت اطلاعات محصولات |
POST /api/products |
ایجاد محصول |
GET /api/products/{id} |
دریافت اطلاعات یک محصول |
PUT /api/products |
ویرایش اطلاعات یک محصول |
GET /api/customers |
دریافت اطلاعات مشتریان |
POST /api/customers |
ایجاد مشتری |
GET /api/customers/{id} |
دریافت اطلاعات یک مشتری |
PUT /api/customers |
ویرایش اطلاعات یک مشتری |
GET /api/orders |
دریافت اطلاعات سفارشات |
POST /api/orders |
ایجاد سفارش |
GET /api/orders/{id} |
دریافت اطلاعات یک سفارش |
اطلاعات همهی محصولات در قالب یک آرایه برگردانده میشود:
یک محصول با اطلاعات اولیهی دادهشده ایجاد میشود و شناسهی آن برگردانده میشود:
شناسهی محصول بهعنوان ورودی داده میشود و اطلاعات محصول برگردانده میشود:
اگر محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اطلاعات جدید محصول داده میشود و پس از بهروزرسانی اطلاعات محصول، پاسخی با کد 204
برگردانده میشود:
اگر محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اطلاعات همهی مشتریان در قالب یک آرایه برگردانده میشود:
یک مشتری با اطلاعات اولیهی دادهشده ایجاد میشود و شناسهی آن برگردانده میشود:
اگر مشتریای با نام کاربری دادهشده از قبل موجود باشد، پاسخ باید بهصورت زیر باشد:
شناسهی مشتری بهعنوان ورودی داده میشود و اطلاعات مشتری برگردانده میشود:
اگر مشتریای با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اطلاعات جدید مشتری داده میشود و پس از بهروزرسانی اطلاعات مشتری، پاسخی با کد 204
برگردانده میشود:
اگر مشتریای با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اطلاعات همهی محصولات در قالب یک آرایه برگردانده میشود:
یک سفارش با اطلاعات دادهشده ایجاد میشود، مقدار موجودی محصول به اندازهی تعداد واردشده کم میشود و شناسهی سفارش برگردانده میشود:
اگر مشتری یا محصولی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
اگر مقدار فیلد count
کوچکتر یا مساوی صفر باشد، پاسخ باید بهصورت زیر باشد:
اگر مقدار count
بزرگتر از موجودی فعلی محصول باشد، پاسخ باید بهصورت زیر باشد:
شناسهی سفارش بهعنوان ورودی داده میشود و اطلاعات سفارش برگردانده میشود:
اگر سفارشی با شناسهی واردشده موجود نباشد، پاسخ باید بهصورت زیر باشد:
ir.digipay.bulkshop
هستید.پس از پیادهسازی موارد خواستهشده، پوشهی src
پروژه را زیپ کرده و ارسال کنید. توجه داشته باشید که فقط تغییرات اعمالشده در پوشهی src/main/java/ir.digipay.bulkshop
در نظر گرفته میشوند.