توضیحات تکمیلی مربوط به مسابقه را در بلاگ Quera بخوانید: blog.quera.ir

پروژه‌ای - جام کهانی


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

قوانین رتبه‌بندی گروهی جام جهانی🔗

(منبع : دیجیکالا مگ)

  1. بیشترین امتیازات

به طور کلی، تیمی از یک گروه صعود پیدا می‌کند که امتیازات بیشتری نسبت به حریفان خود داشته باشد. این بند شامل جمع امتیازات برد (۳ امتیاز)، مساوی (۱ امتیاز) و باخت (۰ امتیاز) است.

  1. تفاضل گل

از بین تیم‌های هم‌امتیاز، تیمی صعود می‌کند که تفاضل گل بیشتری داشته باشد. تفاضل گل یعنی اختلاف گل‌های زده شده‌ با خورده شده‌ی یک تیم.

  1. بیشترین گل زده

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

  1. تعداد کارت‌های هر تیم

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

اگر دو تیم در مرحله‌ای از بازی در هر ۴ مورد بالا مشابه هم باشند، فرض می‌کنیم رتبه‌شان برابر است. مثلاً در ابتدای جام که هیچ بازی‌ای صورت نگرفته رتبه‌ی همه‌ی ۴ تیم در یک گروه برابر ۱ است، و امسال در گروه تیم ملی کشورمان پس از بازی پرتغال - اسپانیا و ایران - مراکش، ایران صدرنشین گروه بود و رتبه‌ی هر دو پرتغال و اسپانیا برابر ۲ بود و مراکش که امتیازش از آن‌ها کم‌تر بود، رتبه‌ی ۴ را داشت.


فایل‌های اولیه:🔗

فایل مربوط به خود را دانلود کرده و محتوای آن‌را ببینید:

*فایل مربوط به زبان Java : * QorldCup.java

*فایل مربوط به زبان Python3: * QorldCup.py

*فایل مربوط به زبان ++C : * qorld_cup.cpp

فایل مربوط به زبان #C (با کامپایلر #Mono C): QurldCup.cs


ساختار کد🔗

پروژه‌ی اولیه شامل کلاس qorld_cup است که در آن توابع زیر را باید تکمیل کنید. شما می‌توانید در این کلاس هر تعداد متغیر اضافی که خواستید تعریف کنید، اما متغیر خارج از کلاس بصورت global نباید تعریف کنید. (در صورت تعریف کردن ممکن است نمره‌ای دریافت نکنید.)

  1. تابع initial که لیست نام کوتاه ۳۲ کشور حاضر در این دوره از جام جهانی را ورودی می‌گیرد، که ۴ تای اول در گروه ۱، ۴ تای دوم در گروه ۲، و همین‌طور تا ۴ تای هشتم که در گروه ۸ هستند. نام کوتاه هر کشور یک رشته از حروف بزرگ انگلیسی حداکثر ۳ حرفی است. مثلا ایران IRN است و چین CHN است.

  2. تابع add_game_result که ۶ پارامتر ورودی می‌گیرد: به ازای هر یک از ۲ تیم: نام کوتاه تیم، تعداد گل‌های زده در این بازی، و تعداد کارت‌های دریافت کرده در این بازی.

  3. تابع get_score که نام کوتاه یک تیم را ورودی می‌گیرد و امتیازش را برمی‌گرداند.

  4. تابع get_rank که نام کوتاه یک تیم را ورودی می‌گیرد و رتبه‌اش در گروه خودش را برمی‌گرداند.


نحوه‌ی تست کردن کد🔗

می‌توانید کد خود را بوسیله‌ی stdin و stdout در کنسول تست کنید. پس از اجرا کردن کد، ابتدا تعداد دستوراتی که می‌خواهید به برنامه بدهید را بنویسید. سپس نام کوتاه ۳۲ تیم را وارد کنید تا به تابع initial داده شود، و سپس می‌توانید به شکل زیر با توابع ارتباط داشته باشید:

  1. ورودی دادن به تابع add_game_result:
add_game_result TeamName1 Score1 #Cards1 TeamName2 Score2 #Cards2
Plain text
  1. ورودی دادن به تابع get_score:
    get_score TeamName
    Plain text
  2. ورودی دادن به تابع get_rank:
    get_rank TeamName
    Plain text
    و بعد از ورودی دادن به توابع get_rank و get_score*، خروجی تابع را برنامه در *stdout می‌نویسد.

مثال🔗

فرض کنید ورودی initial مانند جام جهانی امسال بوده باشد. این ۱۰ تعامل با کد نمایانگر ۲ بازی ابتدایی در گروه تیم ملی کشورمان می‌باشد، و وضعیت گروه پس از این ۲ بازی را نشان می‌دهد:

10
IRN MAR SPN PRT
A B C D
E F G H
I J K L
M N O P
Q R S T 
U V W X
AA BB CC DD
add_game_result IRN 1 3 MAR 0 1
add_game_result PRT 3 1 SPN 3 1
get_score IRN
get_score SPN
get_score PRT
get_score MAR
get_rank IRN
get_rank SPN
get_rank PRT
get_rank MAR
Plain text

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

3
1
1
0
1
2
2
4
Plain text

فرمت فایل ارسالی برای داوری🔗

فایل ابتدایی مربوطه را دریافت کرده و توابع گفته شده را تکمیل کرده و ارسال کنید. تنها کلاس مربوطه را تغییر دهید!

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