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

در زمان مسابقه می‌توانید سوال‌های خود را از قسمت "سوال بپرسید" مطرح کنید.

بعد از مسابقه در ساعت ۱۹:۰۰ امروز وبیناری برای حل بخشی از سوالات مسابقه و پاسخگویی به سوالات شما تدارک دیده‌ایم که می‌توانید از طریق این لینک شرکت نمایید. دقت کنید که در هنگام ورود باید گزینه مهمان را انتخاب نمایید.

PHP - مرتب‌سازی تعاملی


پدرام مدیر وب‌سایت آموزشی کاپ‌آموز است. او در این روزهای کرونایی تصمیم گرفته است که یک نظرسنجی بین کاربران سایتش برگزار کند تا بداند کدام دوره‌ها موردعلاقه‌ی کاربران بوده‌اند. پدرام استراتژی خاصی را برای این نظرسنجی در نظر گرفته است. چنین نظرسنجی‌هایی معمولاً به این‌صورت برگزار می‌شوند که هر کاربر دوره یا دوره‌های موردعلاقه‌ی خود را از میان تمامی دوره‌ها انتخاب می‌کند. از آن‌جایی که اکثر کاربران کاپ‌آموز تمامی دوره‌ها را گذرانده‌اند(!)، او از کاربران می‌خواهد یک رتبه‌بندی بین دوره‌ها انجام دهند.

روند برگزاری نظرسنجی به این‌صورت است که کاربر در هر مرحله با یک پرسش دوگزینه‌ای مواجه می‌شود و باید از بین دو دوره، دوره‌ای که علاقه‌ی بیش‌تری به آن دارد را انتخاب کند. در انتها، رتبه‌بندی دوره‌ها نمایش داده می‌شود.

جزئیات پروژه🔗

پروژه‌ی اولیه را از این لینک دانلود کنید. ساختار فایل‌های این پروژه به‌صورت زیر است:

interactive-sort
├── assets
├── test
├── index.php
└── items.txt
Plain text

صفحه‌ای که کاربر با آن تعامل دارد، index.php است. محتوای این صفحه بر حسب وضعیت فعلی باید تغییر کند.

فایل items.txt شامل نام دوره‌ها است. در هر خط، نام یک دوره نوشته شده است. تضمین می‌شود که تا زمان نمایش نتایج، محتوای این فایل تغییر نمی‌کند.

صفحه‌ی پرسش🔗

این صفحه باید به‌صورت زیر باشد (به ID المان‌ها و محتوای آن‌ها توجه کنید):

<body>
  <p id="question">PHP course or Python course?</p>
  <div id="choice1" class="button">PHP course</div>
  <div id="choice2" class="button">Python course</div>
  <form name="form" method="post">
    <input type="hidden" id="choice" name="choice">
    <input type="submit">
  </form>
</body>
HTML

اگر کاربر گزینه‌ی اول را انتخاب کند، فیلد choice با مقدار 1 با متد POST به index.php ارسال می‌شود. در غیر این‌صورت، فیلد choice با مقدار 2 ارسال می‌شود.

گزینه‌هایی که کاربر انتخاب می‌کند را به شکل دلخواه در session ذخیره کنید.

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

صفحه‌ی پرسش

صفحه‌ی نتایج🔗

این صفحه باید به‌صورت زیر باشد (به ID المان‌ها و محتوای آن‌ها توجه کنید):

<body>
  <p id="result">Java course &lt; Python course &lt; PHP course</p>
</body>
HTML

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

صفحه‌ی نتایج

فرایند رتبه‌بندی را با استفاده از الگوریتمی نظیر merge sort انجام دهید تا با استفاده از کم‌ترین مقایسه‌ی ممکن بتوان رتبه‌بندی را انجام داد.

پس از نمایش نتیجه‌ی رتبه‌بندی، با ارسال مجدد درخواست به index.php، کاربر هم‌چنان باید با صفحه‌ی نتایج روبه‌رو شود.

مثال🔗

در پروژه‌ی اولیه، محتویات فایل items.txt به‌صورت زیر است:

PHP course
Python course
Java course
Plain text

مقادیر فوق، همان مقادیری هستند که کاربر باید مقایسه را بین آن‌ها انجام دهد.

نمونه‌ای از فرایند مقایسه را در زیر می‌بینید:

مرتب‌سازی تعاملی

نکات🔗

  • فرایند مرتب‌سازی را با الگوریتمی نظیر merge sort انجام دهید. در صورت بالا بودن تعداد مقایسه‌ها، امتیازی کسب نخواهید کرد.
  • انتخاب‌های کاربر را نمی‌توانید در کوکی ذخیره کنید. برای ذخیره‌سازی انتخاب‌ها، از session استفاده کنید (تنها کوکی PHPSESSID در نظر گرفته می‌شود).

آن‌چه باید آپلود کنید🔗

فایل index.php را آپلود کنید. اگر فایل‌های دیگری نیز در کنار index.php به پروژه اضافه کرده‌اید، همه‌ی فایل‌ها را Zip کرده و ارسال کنید.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.