در یک اپ ورزشی، میخواهیم بروزرسانی مخصوص جام جهانی را منتشر کنیم. در این بروزرسانی (که البته قبل از شروع جام جهانی قرار بود منتشر شود!)، میخواهیم بتوانیم رتبهبندی تیمها در مرحله گروهی را شبیهسازی کنیم. ساختار اولیهی کدی که قرار است این شبیهسازی را انجام دهد به شما داده میشود و شما باید آن را تکمیل کنید.
# قوانین رتبهبندی گروهی جام جهانی
(منبع : [دیجیکالا مگ](https://www.digikala.com/mag/%D8%AC%D8%A7%D9%85-%D8%AC%D9%87%D8%A7%D9%86%DB%8C-%DA%AF%D8%B1%D9%88%D9%87-%D8%AA%D8%B3%D8%A7%D9%88%DB%8C-%D8%A7%D9%85%D8%AA%DB%8C%D8%A7%D8%B2%D8%A7%D8%AA-%D8%B5%D8%B9%D9%88%D8%AF/))
1. **بیشترین امتیازات**
به طور کلی، تیمی از یک گروه صعود پیدا میکند که امتیازات بیشتری نسبت به حریفان خود داشته باشد. این بند شامل جمع امتیازات برد (۳ امتیاز)، مساوی (۱ امتیاز) و باخت (۰ امتیاز) است.
2. **تفاضل گل**
از بین تیمهای همامتیاز، تیمی صعود میکند که تفاضل گل بیشتری داشته باشد. تفاضل گل یعنی اختلاف گلهای زده شده با خورده شدهی یک تیم.
3. **بیشترین گل زده**
بند سوم قانون فیفا بر این اساس است که تیمی که بیشترین گل زده را دارد مستحق صعود است. پس بین دو تیمی که امتیازشان برابر است و تفاضل گلشان نیز برابر است، تیمی که بیشتر گل زده رتبهی بهتری میگیرد.
4. **تعداد کارتهای هر تیم**
حالا نوبت به نحوهی بازی این تیمها میرسد. فیفا در این شرایط ویژه که امتیاز، تفاضل گل، و تعداد گل زده دو تیم برابر باشد، به تیمی اجازهی صعود میدهد که کمترین کارت را در بازیها گرفته باشد. البته هر کارت امتیازات منفی مشخصی دارد، ولی برای سادهتر شدن صورت این سوال فرض میکنیم تیمی که تعداد کمتری کارت در بازیها دریافت کرده در رتبهی بهتری قرار میگیرد.
اگر دو تیم در مرحلهای از بازی در هر ۴ مورد بالا مشابه هم باشند، فرض میکنیم رتبهشان برابر است. مثلاً در ابتدای جام که هیچ بازیای صورت نگرفته رتبهی همهی ۴ تیم در یک گروه برابر ۱ است، و امسال در گروه تیم ملی کشورمان پس از بازی پرتغال - اسپانیا و ایران - مراکش، ایران صدرنشین گروه بود و رتبهی هر دو پرتغال و اسپانیا برابر ۲ بود و مراکش که امتیازش از آنها کمتر بود، رتبهی ۴ را داشت.
----------
# فایلهای اولیه:
فایل مربوط به خود را دانلود کرده و محتوای آنرا ببینید:
**فایل مربوط به زبان Java : ** [QorldCup.java](http://bayanbox.ir/download/6006581750868782787/QorldCup.java)
**فایل مربوط به زبان Python3: ** [QorldCup.py](http://bayanbox.ir/download/6542306507967080048/QorldCup.py)
**فایل مربوط به زبان ++C : ** [qorld_cup.cpp](http://bayanbox.ir/download/4611160333708180502/qorld-cup.cpp)
**فایل مربوط به زبان #C (با کامپایلر #Mono C):** [QurldCup.cs](https://www.dropbox.com/s/eluogpqqaby5gdh/QorldCup.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
```
2. ورودی دادن به تابع *get_score*:
```
get_score TeamName
```
3. ورودی دادن به تابع *get_rank*:
```
get_rank TeamName
```
و بعد از ورودی دادن به توابع *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
```
و خروجیهای برنامه چنین میشود:
```
3
1
1
0
1
2
2
4
```
----------
# فرمت فایل ارسالی برای داوری
فایل ابتدایی مربوطه را دریافت کرده و توابع گفته شده را تکمیل کرده و ارسال کنید. **تنها کلاس مربوطه را تغییر دهید!**