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

به مسابقه «انتخابی هکاتون فیتو» خوش آمدی!

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

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

موفق باشید 😉✌

کشتی‌گیری در دنیای اعداد


فایل اولیه سوال را می‌توانید از این لینک دانلود کنید.

تحلیل کارایی و برآورد پارامتر🔗

در فایل اولیه سوال یک فایل به فرمت CSV‍ به نام wrestling_stats.csv وجود دارد که اطلاعات مسابقات کشتی را نگه می‌دارد.

هر سطر (به جز هدر) شامل این ستون‌هاست:

  • match_id

  • weight_class

  • duration_sec

  • points_winner

  • points_loser

  • continent_winner

  • match_type

وظیفهٔ شما نوشتن یک اسکریپت پایتون (بدون هیچ import یا ماژول خارجی) است که دو فایل خروجی تولید می‌کند:

  • part_one.csv
  • part_two.csv

پیاده‌سازی🔗

شما باید یک فایل پایتونی به نام stc.py ایجاد کنید. سپس در این فایل باید دو تابع بنویسید که هر تابع وظیفه دارد تا یک دیتاست ایجاد کند و آن را در کنار فایل stc.py ذخیره کند. نام این دو تابع به شرح زیر است:

  • create_part1
  • create_part2

این دو تابع وظیفه دارند که مجموعه‌داده‌ی wrestling_stats.csv را دریافت کنند و سپس طبق توضیحات داده شده اطلاعاتی را تولید کرده و در دو مجموعه داده‌ی part_one.csv و part_two.csv ذخیره کنند. توجه کنید که ورودی این دو تابع باید نام یک مجموعه‌داده باشد.

شما باید فایل پیاده‌سازی پایتونی خود را به همراه part_one.csv و part_two.csv زیپ کرده و در کوئرا قرار دهید.


محدودیت‌های کلی🔗

  1. بدون استفاده از هیچ دستور import؛ فقط مجاز به استفاده از built-inهای پایتون هستید.

  2. خروجی‌ها باید دقیقاً در قالب CSVباشند.

  3. دقت اعداد اعشاری در خروجی حداقل ۶ رقم پس از ممیز باشد.

  4. همهٔ محاسبات (مثل نمایی و لگاریتم و بهینه‌سازی) باید به صورت دستی پیاده‌سازی شوند.


قسمت اول – رتبه‌بندی کارایی🔗

  1. برای هر مسابقه ii کارایی را تعریف کنید:

    Ei=points_winneriduration_seci. E_i = \frac{\text{points\_winner}_i}{\text{duration\_sec}_i}.

  2. برای هر جفت (continent_winner,weight_class)\bigl(\text{continent\_winner},\,\text{weight\_class}\bigr) میانگین کارایی را محاسبه کنید:

    mean_effc,w=1Nc,wi:(ci,wi)=(c,w)Ei. \text{mean\_eff}_{c,w} = \frac{1}{N_{c,w}} \sum_{i:(c_i,w_i)=(c,w)} E_i.

  3. نمونه خروجی در part_one.csv:

continent weight_class mean_efficiency
Asia Heavyweight 12.967815168

ردیف‌ها بر حسب mean_efficiency نزولی مرتب شوند.


قسمت دوم – تخمین پارامتر نمایی قطع‌شده (MLE)🔗

برای هر دستهٔ وزنی (ww) فرض کنید زمان‌های مبارزه تابع چگالی نمایی قطع‌شده دارند که در بازه [0,Tw][0,T_w] تعریف می‌شود، آنگاه تابع چگالی احتمال به شکل زیر است:

f(t;λ)=λeλt1eλTw,0tTw f(t; \lambda) = \frac{ \lambda \cdot e^{-\lambda t} }{ 1 - e^{-\lambda T_w} }, \quad 0 \leq t \leq T_w

  1. برای هر کلاس وزنی w، لگاریتم درست‌نمایی (log‐likelihood) را بنویسید و پارامتر λ^w\hat\lambda_w را با روشی مناسب (مثلاً نیوتن–رافسون یا جستجوی عددی) پیدا کنید.
  1. معیار AIC را محاسبه کنید:

AICw=2k2w(λ^w),k=1. \mathrm{AIC}_w = 2\,k \;-\; 2\,\ell_w(\hat\lambda_w), \quad k=1.

  1. خروجی در part_two.csv، هر سطر سه ستون:
weight_class lambda_hat aic
Heavyweight 15.21354613 18.21354613

ردیف‌ها بر حسب lambda_hat به صورت صعودی مرتب شوند. دقت عددی هر مقدار حداقل ۶ رقم اعشار باشد.


نکات تکمیلی

محدودیت‌های پیاده‌سازی :

  • نمی‌توانید از هیچ کتابخانهٔ خارجی یا ماژول (یعنی هیچ import) استفاده کنید.
  • تنها از توابع و امکانات پایهٔ پایتون استفاده کنید.
  • فایل‌ها را با متدهای استاندارد open/read/write بخوانید/بنویسید.
  • فرمت CSV باید دقیقاً مطابق با آنچه گفته شد باشد (جداسازی با ‍, ، بدون فاصلهٔ اضافه).
  • برای توابع نمایی از مقدار ثابت e=2.718281828459045 استفاده کنید.
  • همهٔ محاسبات آماری و عددی را باید خودتان پیاده کنید (تابع log، مشتق، حل عددی و …).
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.