سلام دوست عزیز😃👋

به مسابقه «بله‌کمپ ۷ - مرحله دوم (Back-End)» خوش آمدی!

نکات مفید برای شرکت در مسابقه:

  • هرگونه استفاده از ابزارهای تولید کد، مثل chatGPT و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکت‌کنندگان مسابقه حذف می‌شوید.
  • هر گونه ارتباط با سایر شرکت‌کنندگان ممنوع است.
  • می‌توانید سوال‌ها و مشکلات خود را از بخش «سوال بپرسید» با ما در میان بگذارید.

سوال «نظرات وبلاگ» مهارت شما را در پیاده‌سازی می‌سنجد (با زبان برنامه‌نویسی دلخواه‌تان می‌توانید حل کنید).🔗

سوال «چالش اطلاعات» مهارت شما را در کار با دیتابیس می‌سنجد (کوئری‌های شما باید روی MySQL قابل اجرا باشند).🔗

سوال «سامانه بلاگ بله آباد» مهارت شما را در حوزه بک‌اند می‌سنجد (این را سوال را صرفا با یک زبان حل کنید و حل آن با چند زبان مختلف تاثیری بر نتیجه شما ندارد).🔗

موفق باشید و بهتون خوش بگذره 😉✌

نظرات وبلاگ - پیاده‌سازی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در پایین وبلاگ‌های «بله»، کاربرها می‌توانند نظرات خود را بنویسند. در پایین یکی از وبلاگ‌ها تعدادی نظر ثبت شده ولی به دلیل تغییرات شرایط آب‌وهوایی این اطلاعات برای یکی از پست‌ها بهم ریخته است.

می‌دانیم در این پست، nn نظر توسط کاربران ثبت شده است (ترتیب نظرات را نمی‌دانیم). همچنین برای هر نظر می‌دانیم توسط چه کسی و در چه لحظه‌ای ثبت شده، همچنین محتوای آن نظر را می‌دانیم. برخی از نظرات پاسخی به نظرات دیگر است. آن‌ها را باید به نحوی که در نمونه‌ها می‌بینید، با فاصله از سمت چپ صفحه نشان دهید.

فرض کنید عرض صفحه‌ی پیام‌ها برابر LL است. یعنی هر پیام در یک جعبه قرار می‌گیرد که حداکثر LL کاراکتر در آن قرار دارد.

در قسمت بالا سمت چپ نظر، نام فرستنده و پایین سمت راست نظر زمان ارسال نشان داده می‌شود.

حال از شما می‌خواهیم صفحه‌ی نظرات را بازسازی کنید.

نکات جعبه حاوی نظر🔗

سطر اول جعبه

سطر اول حاوی نامِ کاربر است. ابتدا و انتهای این سطر کاراکتر + چاپ کنید. بقیه سطر حاوی LL کاراکتر - است ولی باید بعد از اولین -، نام کاربر را جایگزین -ها کنید. برای مثال اگر L=15L=15 و نام کاربر برابر Amin باشد سطر اول به‌صورت زیر می‌شود.

+-Amin----------+
Plain text
سطرهای میانی جعبه

در سطرهای میانی باید نظر کاربر را بنویسید، ابتدا و انتهای هر سطر که ایجاد می‌کنید باید + باشد و بین دو + به اندازه‌ی LL کاراکتر فاصله باشد. در این فاصله باید پیام کاربر را بنویسید.

اگر بین کلمات چندین فاصله یا space وجود داشت، آن‌ها را یکی در نظر بگیرید و شما به اندازه‌ی یک واحد فاصله دهید. همچنین فاصله یا space‌های اول و آخر متن را در نظر نگیرید.

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

برای مثال اگر L=15L = 15 و متن نظر کاربر برابر عبارت زیر باشد

"      I am     Your User. Can     You Help     Me.  "
Plain text

شما باید به صورت زیر بنویسید

+I am Your User.+
+Can You Help   +
+Me.            +
Plain text
سطر پایانی جعبه

سطر آخر حاوی زمان ارسال نظر است. ابتدا و انتهای این سطر کاراکتر + چاپ کنید. بقیه سطر حاوی LL کاراکتر - است ولی باید قبل از آخرین -، زمان ارسال نظر را جایگزین -ها کنید. برای مثال اگر L=15L=15 و زمان ارسال نظر برابر 00:13:47 باشد سطر آخر به‌صورت زیر می‌شود.

+------00:13:47-+
Plain text

انواع نظرات🔗

نوعsend
send <username> hh:mm:ss "<comment>"
Plain text

به‌جای <username> یک رشته از حروف کوچک یا بزرگ یا ارقام یا ,‍، . یا ; است. طول این رشته حداکثر ۱۰ است.

0hh23,0mm59,0ss590 \leq hh \leq 23, \quad 0 \leq mm \leq 59, \quad 0 \leq ss \leq 59

به‌جای <comment>‌ یک رشته شامل تعدادی کلمه مشابه <username> است و کلمه‌های آن با تعدادی فاصله یا space از هم جدا شده است.

برای مثال

send Amin 00:13:47 "  I am  Your User. Can  You Help  Me.  "
Plain text
نوعreply
reply <username> <index> hh:mm:ss "<comment>"
Plain text

به‌جای <username> یک رشته از حروف کوچک یا بزرگ یا ارقام یا ,‍، . یا ; است. طول این رشته حداکثر ۱۰ است.

به‌جای <index> شماره‌ی سطر نظری را نشان می‌دهد که این نظر به آن جواب داده است. شماره‌ها را از ۱ تا nn به ترتیب ورودی در نظر بگیرید.

0hh23,0mm59,0hh590 \leq hh \leq 23, \quad 0 \leq mm \leq 59, \quad 0 \leq hh \leq 59

به‌جای <comment>‌ یک رشته شامل تعدادی کلمه مشابه <username> است و کلمه‌های آن با تعدادی فاصله یا space از هم جدا شده است.

برای مثال (ریپلای آخر به نظر Amir است.)

send Ali 00:20:00 "second"
send Amir 00:10:00 "first"
send Hossein 00:30:00 "third"
reply Amin 2 00:40:00 "  I am  Your User. Can  You Help  Me?  "
Plain text

نکات مربوط به ریپلای🔗

فاصله نظرات از چپ

اگر نظری پاسخ یک نظر دیگر باشد باید قبل از هر سطر جعبه‌ی آن ۴ کاراکتر < را اضافه کنید. اگر همان نظر پاسخ نظر دیگری باشد باید ۸ کاراکتر < را اضافه کنید و...

برای مثال اگر ورودی به این صورت باشد:

3 15
send A 00:10:00 "Hi"
reply B 1 00:20:00 "Hi"
reply C 2 00:30:00 "Hi"
Plain text

خروجی به صورت زیر است:

+-A-------------+
+Hi             +
+------00:10:00-+
>>>>+-B-------------+
>>>>+Hi             +
>>>>+------00:20:00-+
>>>>>>>>+-C-------------+
>>>>>>>>+Hi             +
>>>>>>>>+------00:30:00-+
Plain text
ترتیب نظرات

شما باید نظرها را به ترتیب زمان ارسال مرتب کنید. همچنین پاسخ هر نظر باید زیر آن نظر باشد. اینکه پاسخ هر نظر باید زیر آن نظر باشد، به ترتیب زمان الویت دارد.

برای مثال اگر ورودی به این صورت باشد:

3 15
send D 00:40:00 "Hi"
send A 00:10:00 "Hi"
send B 00:20:00 "Hi"
reply C 2 00:30:00 "Hi"
Plain text

خروجی به این صورت می‌شود:

+-A-------------+
+Hi             +
+------00:10:00-+
>>>>+-C-------------+
>>>>+Hi             +
>>>>+------00:30:00-+
+-B-------------+
+Hi             +
+------00:20:00-+
+-D-------------+
+Hi             +
+------00:40:00-+
Plain text

زیرمسئله‌ها🔗

زیرمسئله‌ها توضیح ‌ امتیاز
۱ فقط یک پیام را به درستی نشان دهید. ۳۰
۲ چند پیام را به درستی نشان دهید. ۷۵
۳ یک پیام و یک پاسخ به آن را به درستی نشان دهید. ۳۰
۴ چند پیام و چند پاسخ به آن را به درستی نشان دهید. تضمین می‌شود به پاسخ‌ها پاسخی داده نشود. ۷۵
۵ هیچ شرط خاصی نداریم.‌ ۹۰

ورودی🔗

در سطر اول ورودی، دو عدد صحیح nn و LL با فاصله از هم داده می‌شود. nn نشان دهنده‌ی تعداد دستورها و LL عرض صفحه است. 1n100,15L301 \leq n \leq 100, \quad \quad 15 \leq L \leq 30

در nn سطر بعدی در هر سطر یک دستور مطابق با ساختاری که در بالا گفته شده، داده می‌شود.

ورودی‌ها لزوماً به ترتیب زمان نیستند ولی تضمین می‌شود ریپلای یک پیام دیرتر از پیام آمده باشد. همچنین هیچ وقت زمان دو پیام برابر نیست.

خروجی🔗

خروجی شما باید دقیقاً مثل خروجی‌های نمونه و طبق خواسته‌ی سوال باشد.

مثال‌ها🔗

ورودی نمونه ۱🔗

4 15
send amin 00:00:18 "that was so good I liked it" 
send mahla 00:10:19 "Is it rated"
reply romina 2 00:10:30 "yes it is rated" 
send arshia 00:00:50 "I love quera contests"
Plain text

خروجی نمونه ۱🔗

+-amin----------+
+that was so    +
+good I liked it+
+------00:00:18-+
+-arshia--------+
+I love quera   +
+contests       +
+------00:00:50-+
+-mahla---------+
+Is it rated    +
+------00:10:19-+
>>>>+-romina--------+
>>>>+yes it is rated+
>>>>+------00:10:30-+
Plain text

ورودی نمونه ۲🔗

3 20
send Amin 00:00:18 "That Was So gOod I Liked It" 
reply Mahla 1 00:10:19 "Is It Rated"
reply Romina 2 00:10:30 "Yes It Is RaTeD" 
Plain text

خروجی نمونه ۲🔗

+-Amin---------------+
+That Was So gOod I  +
+Liked It            +
+-----------00:00:18-+
>>>>+-Mahla--------------+
>>>>+Is It Rated         +
>>>>+-----------00:10:19-+
>>>>>>>>+-Romina-------------+
>>>>>>>>+Yes It Is RaTeD     +
>>>>>>>>+-----------00:10:30-+
Plain text

ورودی نمونه ۳🔗

4 15
reply user2 4 00:30:00 "   u    p   " 
reply user3 4 00:40:00 " u   p    " 
reply user4 1 00:50:00 " u    p   "
send user1 00:10:00 "    u   p     " 
Plain text

خروجی نمونه ۳🔗

+-user1---------+
+u p            +
+------00:10:00-+
>>>>+-user2---------+
>>>>+u p            +
>>>>+------00:30:00-+
>>>>>>>>+-user4---------+
>>>>>>>>+u p            +
>>>>>>>>+------00:50:00-+
>>>>+-user3---------+
>>>>+u p            +
>>>>+------00:40:00-+
Plain text
لینک‌های مفید برای حل سوال
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.