پدرام مدیر وبسایت آموزشی *کاپآموز* است. او در این روزهای کرونایی تصمیم گرفته است که یک نظرسنجی بین کاربران سایتش برگزار کند تا بداند کدام دورهها موردعلاقهی کاربران بودهاند. پدرام استراتژی خاصی را برای این نظرسنجی در نظر گرفته است. چنین نظرسنجیهایی معمولاً به اینصورت برگزار میشوند که هر کاربر دوره یا دورههای موردعلاقهی خود را از میان تمامی دورهها انتخاب میکند. از آنجایی که اکثر کاربران *کاپآموز* تمامی دورهها را گذراندهاند(!)، او از کاربران میخواهد یک رتبهبندی بین دورهها انجام دهند.
روند برگزاری نظرسنجی به اینصورت است که کاربر در هر مرحله با یک پرسش دوگزینهای مواجه میشود و باید از بین دو دوره، دورهای که علاقهی بیشتری به آن دارد را انتخاب کند. در انتها، رتبهبندی دورهها نمایش داده میشود.
# جزئیات پروژه
پروژهی اولیه را از [این لینک](/contest/assignments/24836/download_problem_initial_project/84143/) دانلود کنید. ساختار فایلهای این پروژه بهصورت زیر است:
```
interactive-sort
├── assets
├── test
├── index.php
└── items.txt
```
صفحهای که کاربر با آن تعامل دارد، `index.php` است. محتوای این صفحه بر حسب وضعیت فعلی باید تغییر کند.
فایل `items.txt` شامل نام دورهها است. در هر خط، نام یک دوره نوشته شده است. **تضمین میشود** که تا زمان نمایش نتایج، محتوای این فایل تغییر نمیکند.
## صفحهی پرسش
این صفحه باید بهصورت زیر باشد (به *ID* المانها و محتوای آنها توجه کنید):
```html
<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>
```
اگر کاربر گزینهی اول را انتخاب کند، فیلد `choice` با مقدار `1` با متد *POST* به `index.php` ارسال میشود. در غیر اینصورت، فیلد `choice` با مقدار `2` ارسال میشود.
گزینههایی که کاربر انتخاب میکند را به شکل دلخواه در *session* ذخیره کنید.
نتیجه بهصورت زیر خواهد بود:
![صفحهی پرسش](https://quera.ir/qbox/view/LIkt1y66p9/interactive-sort-1.png)
## صفحهی نتایج
این صفحه باید بهصورت زیر باشد (به *ID* المانها و محتوای آنها توجه کنید):
```html
<body>
<p id="result">Java course < Python course < PHP course</p>
</body>
```
نتیجه بهصورت زیر خواهد بود:
![صفحهی نتایج](https://quera.ir/qbox/view/lDtPP6aCS2/interactive-sort-2.png)
فرایند رتبهبندی را با استفاده از الگوریتمی نظیر *merge sort* انجام دهید تا با استفاده از کمترین مقایسهی ممکن بتوان رتبهبندی را انجام داد.
پس از نمایش نتیجهی رتبهبندی، با ارسال مجدد درخواست به `index.php`، کاربر همچنان باید با صفحهی نتایج روبهرو شود.
# مثال
در پروژهی اولیه، محتویات فایل `items.txt` بهصورت زیر است:
```
PHP course
Python course
Java course
```
مقادیر فوق، همان مقادیری هستند که کاربر باید مقایسه را بین آنها انجام دهد.
نمونهای از فرایند مقایسه را در زیر میبینید:
![مرتبسازی تعاملی](https://quera.ir/qbox/view/wD5ULdcuWd/interactive-sort.gif)
# نکات
+ فرایند مرتبسازی را با الگوریتمی نظیر *merge sort* انجام دهید. در صورت بالا بودن تعداد مقایسهها، امتیازی کسب نخواهید کرد.
+ انتخابهای کاربر را نمیتوانید در کوکی ذخیره کنید. برای ذخیرهسازی انتخابها، از *session* استفاده کنید (تنها کوکی `PHPSESSID` در نظر گرفته میشود).
# آنچه باید آپلود کنید
فایل `index.php` را آپلود کنید. اگر فایلهای دیگری نیز در کنار `index.php` به پروژه اضافه کردهاید، همهی فایلها را *Zip* کرده و ارسال کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.