Programming Data Structure And Algorithms Using Python Assignment 5

                     

Course Name: Programming Data Structure And Algorithms Using Python

Link of Course: Click Here

These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


Question 1
Here are some basic facts about tennis scoring : A tennis match is made up of sets. A set is made up of games.
To win a set, a player has to win 6 games with a difference of 2 games. At 6-6, there is often a special tie-breaker. In some cases, players go on playing till one of them wins the set with a difference of two games.


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


Tennis matches can be either 3 sets or 5 sets. The player who wins a majority of sets wins the match (i.e., 2 out 3 sets or 3 out of 5 sets) The score of a match lists out the games in each set, with the overall winner’s score reported first for each set. Thus, if the score is 6-3, 5-7, 7-6 it means that the first player won the first set by 6 games to 3, lost the second one 5 games to 7 and won the third one 7 games to 6 (and hence won the overall match as well by 2 sets to 1).


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


You will read input from the keyboard (standard input) containing the results of several tennis matches. Each match’s score is recorded on a separate line with the following format :
Winner : Loser : Set-1-score,…, Set-k-score, where 2 s<=ks<=5
For example, an input line of the form
Osaka : Barty : 3-6,6-3,6-3
indicates that Osaka beat Barty 3-6, 6-3, 6-3 in a best of 3 set match.


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


The input is terminated by a blank line.
You have to write a Python program that reads information about all the matches and compile the following statistics for each player :
1. Number of best-of-5 set matches won
2. Number of best-of-3 set matches won
3. Number of sets won
4. Number of games won
5. Number of sets lost
6. Number of games lost


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


You should print out to the screen (standard output) a summary in decreasing order of ranking, where the ranking is according to the criteria 1-6 in that order (compare item 1, if equal compare item 2, if equal compare item 3 etc, noting that for items 5 and 6 the comparison is reversed).
For instance, given the following data


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5


Zverev : Medvedev : 2-6, 6-7,7-6,6-3,6-1
Barty : Osaka : 6-4,6-4
Medvedev : Zverev : 6-3,6-3
Osaka : Barty : 1-6,7-5,6-2
Zverev : Medvedev : 6-0,7-6, 6-3
Osaka : Barty : 2-6,6-2,6-0
Medvedev : Zverev : 6-3,4-6,6-3,6-4
Barty : Osaka : 6-1,3-6,7-5
Zverev : Medvedev : 7-6,4-6, 7-6,2-6, 6-2
Osaka : Barty : 6-4,1-6, 6-3
Medvedev : Zverev : 7-5,7-5
Osaka : Barty : 3-6,6-3,6-3
your program should print out the following
Zverev 3 0 10 104 11 186
Medvedev 1 2 11 106 10 104
Osaka 0 4 9 76 8 74
Barty 0 2 8 74 9 76


Solution:

DictionaryStats = dict()
Line_Input= input()
while Line_Input:
      (winner_set,loser_set,win_games,lose_games) = (0,0,0,0)

      (winner,loser,setscores) = Line_Input.strip().split(':',2)

      sets = setscores.split(',')
      for set in sets:
      
          (winstr,losestr) = set.split('-')
          win = int(winstr)
          lose = int(losestr)
          win_games = win_games +win
          lose_games = lose_games+ lose
          if win > lose:
              winner_set = winner_set+1
          else:
              loser_set=loser_set+1
      for player in [winner,loser]:
          try:
              DictionaryStats[player]
          except KeyError:
              DictionaryStats[player]=[0,0,0,0,0,0]
      if winner_set >=3:
          DictionaryStats[winner][0]=DictionaryStats[winner][0]+1
      else:
          DictionaryStats[winner][1]=DictionaryStats[winner][1]+1
      DictionaryStats[winner][2]=DictionaryStats[winner][2]+ winner_set
      DictionaryStats[winner][3]=DictionaryStats[winner][3]+win_games
      DictionaryStats[winner][4]=DictionaryStats[winner][4]-loser_set
      DictionaryStats[winner][5]=DictionaryStats[winner][5] - lose_games
      DictionaryStats[loser][2] = DictionaryStats[loser][2] + loser_set
      DictionaryStats[loser][3] = DictionaryStats[loser][3] + lose_games
      DictionaryStats[loser][4] = DictionaryStats[loser][4]  - winner_set
      DictionaryStats[loser][5] = DictionaryStats[loser][5]  - win_games
      Line_Input = input()
statlist = [(stat[0],stat[1],stat[2],stat[3],stat[4],stat[5],name) for name in
DictionaryStats.keys() for stat in [DictionaryStats[name]]]

statlist.sort(reverse = True)

for entry in statlist:
      print(entry[6],entry[0],entry[1],entry[2],entry[3],-entry[4],-entry[5])

These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5

All weeks solution of Programming Data Structure And Algorithms Using Python: https://progies.in/answers/nptel/programming-data-structure-and-algorithms-using-python

More NPTEL Solutions: https://progies.in/answers/nptel


* The material and content uploaded on this website are for general information and reference purposes only. Please do it by your own first.


These are the solutions of Programming Data Structure And Algorithms Using Python Assignment 5