سلام دوست عزیز😃👋
به «مسابقه استخدامی ایرانسرور» خوش آمدی!
هرگونه ارتباط با سایر شرکتکنندگان و یا استفاده از ابزارهای تولید کد، مثل ChatGPT
و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکتکنندگان مسابقه حذف میشوید.
لینکهای مفید برای شرکت در مسابقه:
سوالات و مشکلات خودتان را میتوانید از طریق قسمت «سوال بپرسید» با ما در میان بگذارید.
سوالات «چالشهای نام ایرانسرور»، «میزگرد بزرگ» و «معین سخنور» مربوط به تکنولوژی PHP
و سوالات «میعین فیراری» و «ایرانگیت» مربوط به تکنولوژیLaravel
است.
موفق باشید و بهتون خوش بگذره 😉✌
لیست سوالات را میتوانید از نوار سمت راست این صفحه مشاهده کنید.
ایرانسرور (IranServer) تصمیم گرفته که برای رونمایی از خدمات جدید خود، یک جلسه مهم میزگردی با حضور مشتریهای کلیدیاش برگزار کند. هدف این جلسه، بحث و بررسی درباره نیازها و تجربههای مشتریان است تا تیم ایرانسرور بتواند خدماتش را بهینهتر کند.
اما یک مشکل وجود دارد؛ ایرانسرور طی تحقیقاتش متوجه شده که اگر مشتریهایی که با هم آشنایی قبلی دارند کنار هم بنشینند، بحثهایشان بیشتر حالت تعارفی پیدا میکند و بازخورد صادقانهای ارائه نمیدهند. برای اینکه بتواند بهترین تحلیلها را داشته باشد، باید اطمینان حاصل کند که هیچ دو نفری که با هم آشنا هستند کنار هم ننشینند.
ایرانسرور میخواهد مشتریها را به شکلی روی دو میز تقسیم کند که:
پروژهی اولیه را از این لینک دانلود کنید.
تابع iranServerRoundTable
را طوری کامل کنید که خروجی خواسته شده را برگرداند:
n
، نشاندهنده تعداد افراد حاضر در مهمانی است.m
، نشاندهنده تعداد آشناییهای قبلی که میان افراد وجود دارد، است.connections
، لیستی از m
آشنایی که هر یک به صورت یک جفت مانند [A, B]
است که نشان دهنده وجود آشنایی قبلی میان دو فرد A و B است.possible
برابر با "YES"
و دو کلید table_1
و table_2
که نشاندهنده لیستی از افراد دور هر میز هستند را بازگرداندید.possible
با مقدار "NO"
بازگرداندید.JSON
باشد.مقدار کلید possible
در هر یک از شرایط ذکر شده، باید دقیقا به شکلی که نوشته شده است باشد. (بزرگی و کوچکی حروف مهم است!)
توجه: این سؤال از نوع ساختاری (Constructive) است، بنابراین پاسخهای ممکن لزوماً یکتا نیستند. با این حال، سیستم داوری پاسخهای شما را بررسی میکند تا اطمینان حاصل شود که شرایط مسئله بهدرستی رعایت شدهاند. تنها در صورتی نمره دریافت خواهید کرد که پیادهسازی شما تمامی این شرایط را برآورده کند و یکی از پاسخهای معتبر مسئله باشد.
این مثال شامل ۶ نفر است که هر یک از آنها دقیقا با دو فرد دیگر آشنایی قبلی دارد؛ به شکل زیر توجه کنید:
حال میتوانیم آنها را به صوزت زیر به دو گروه مجزا تقسیم بندی کرد:
این مثال شامل ۶ نفر است و رابط آشنایی میان آنها به شکل زیر است:
در این مثال نمیتوان افراد را طوری برا سر دو میز نشاند که شرایط خواسته شده را حفظ کند؛ چرا که در تصویر زیر فرد شماره ۵ را نمیتوان دور هیچیک از میزها نشاند!
این مثال شامل ۶ نفر است و رابط آشنایی میان آنها به شکل زیر است:
یکی از حالات مطلوب جهت تقسیم افراد به دو میز موجود به شکل زیر است:
حالت دیگری هم وجود دارد که میتوان این کار را انجام داد اما با شرط دوم (متعادل بودن میزها) را ندارد!
تصویر زیر یکی از حالاتی است که برای این مسئله موردقبول نیست:
یک فایل PHP با نام solution.php
که تابع iranServerRoundTable
در آن پیادهسازی شده است آپلود کنید.