البرمجة

تحليل إحصائيات مباريات التنس

بناءً على الشرح الذي قدمته، يتطلب مشكلتك إجراء عمليات معالجة لقائمة السلاسل التي تم قراءتها من الإدخال للحصول على الإخراج المطلوب وفقًا للمعايير المطلوبة. سأقدم لك برنامج Python يقوم بذلك:

python
# قائمة لتخزين النتائج لكل لاعب players = {} # قراءة الإدخال ومعالجته while True: match_info = input().strip() # فحص نهاية الإدخال if not match_info: break # تقسيم معلومات المباراة winner, loser, sets_info = match_info.split(":") sets = sets_info.split(",") # تحديث إحصائيات اللاعبين for set_result in sets: winner_sets, loser_sets = map(int, set_result.split("-")) # تحديث إحصائيات الفائز players[winner] = players.get(winner, [0, 0, 0, 0, 0, 0]) players[winner][0] += 1 # عدد مباريات الـ best-of-5 التي فاز بها players[winner][2] += winner_sets # عدد الأشواط التي فاز بها players[winner][3] += winner_sets * 6 + loser_sets # عدد الألعاب التي فاز بها players[winner][4] += loser_sets # عدد الأشواط التي خسرها players[winner][5] += loser_sets * 6 + winner_sets # عدد الألعاب التي خسرها # تحديث إحصائيات الخاسر players[loser] = players.get(loser, [0, 0, 0, 0, 0, 0]) players[loser][4] += winner_sets # عدد الأشواط التي خسرها players[loser][5] += winner_sets * 6 + loser_sets # عدد الألعاب التي خسرها # التحقق من عدد مباريات الـ best-of-5 والـ best-of-3 التي فاز بها اللاعب if len(sets) == 5: players[winner][1] = players.get(winner, [0, 0, 0, 0, 0, 0])[1] + 1 elif len(sets) == 3: players[winner][1] = players.get(winner, [0, 0, 0, 0, 0, 0])[1] + 1 # طباعة النتائج for player, stats in sorted(players.items(), key=lambda x: (-x[1][0], -x[1][1], -x[1][2], -x[1][3], x[1][4], x[1][5])): print(player, *stats)

هذا البرنامج يقوم بقراءة الإدخال ومعالجته للحصول على الإحصائيات المطلوبة لكل لاعب ومن ثم يطبع النتائج بترتيب تنازلي وفقًا للمعايير المحددة.

المزيد من المعلومات

بالطبع، سأوفر المزيد من المعلومات حول كيفية عمل البرنامج وكيفية تحقيق كل مطلب من المطالب المذكورة في المشكلة.

  1. قراءة الإدخال ومعالجته:

    • يتم استخدام حلقة while لقراءة الإدخال من الوسط القياسي (standard input) حتى يتم العثور على سطر فارغ.
    • يتم تقسيم معلومات المباراة باستخدام الفاصلة “:” للحصول على اسم الفائز والخاسر ومعلومات الأشواط.
    • بعد ذلك، يتم تقسيم معلومات الأشواط بفاصلة “,” للحصول على نتائج كل شوط.
  2. تحديث إحصائيات اللاعبين:

    • يتم تحديث إحصائيات اللاعبين مثل عدد مباريات الـ best-of-5 والـ best-of-3 التي فازوا بها، وعدد الأشواط التي فازوا بها، وعدد الألعاب التي فازوا بها، وعدد الأشواط والألعاب التي خسروها.
    • يتم ذلك بتحديث القيم في القاموس players حيث يتم استخدام اسم اللاعب كمفتاح وقيمة مصفوفة تحتوي على الإحصائيات.
  3. طباعة النتائج:

    • يتم طباعة النتائج بترتيب تنازلي حسب المعايير المحددة.
    • يتم استخدام دالة sorted() لترتيب اللاعبين بناءً على الإحصائيات، حيث يتم استخدام معيار ترتيب متعدد للحصول على الترتيب المناسب.
    • بعد ذلك، يتم طباعة اسم اللاعب مع جميع الإحصائيات.

مع هذا البرنامج، يمكنك الحصول على تقرير شامل عن أداء اللاعبين في المباريات بناءً على المعايير المحددة، وترتيبهم وفقًا لذلك.

زر الذهاب إلى الأعلى