Python Code for IPLMINUSTWO (TCS Codevita) | PrepInsta
IPLMINUSTWO
TCS CodeVita is a coding competition organized by TCS every year, in search of world’s best coder. This is a global level coding competition in which coders from all around the world compete for the title of World’s Best Coder. IPLMINUSTWO is one of the sample problem of this year TCS CodeVita season 11 competition.
Question -: The Indian Premier League (IPL) is a professional Twenty20 cricket league, contested by eight teams based out of eight Indian cities. IPL is going to start, and, in this season, you have been given the responsibility to maintain the score board of the league. You have been provided the result of each match. Total 8 teams compete (MI, CSK, RCB, RR, SRH, DC, PKBS, KKR) for winning the title. Each team will play two matches with every other team before playoffs.
So, the total number of matches before playoffs will be 56 league matches. However, you will be provided details of only 54 matches.
The format in which the scores will be given is – the runs scored by team batting first followed by the fall of wickets followed by the number of balls played. The same data will be provided for team batting second.
For example-
Abstract Format – FirstTeamName Runs/Wickets BallsPlayed SecondTeamName Runs/Wickets BallsPlayed
Actual Record – MI 191/10 110 CSK 190/4 120
Here MI scored 191 runs in 110 balls at the loss of 10 wickets and CSK scored 190 runs at the loss of 4 wickets in 120 balls.
The points table is to be constructed based on the given inputs. The points table contains <TeamName, TotalPointsScored by team, and NRR (Net Run Rate)>. The order in which teams will be present is based on the ranking. Ranking of teams is first based on number of points and then on NRR, in case the points are tied.
The points table formation rules are given below-
- The team winning the match will get 2 points.
- NET RUN RATE is calculated as follows:
- Case 1: When both teams make same score. Each team is rewarded with 1 point each and run rate is zero for both the teams.
- Case 2: Team batting first wins the match In this scenario, the margin of runs by which team wins are multiplied by 2 and we get run rate of the match.
- Run rate (RR) = (Runs Difference) * 2
- The winning teams gets positive RR and the losing team gets negative RR.
- For example – team1 = 200 in 120 balls (20.0 overs) and team2 scores 160 in 96 balls (16.0 overs). Here, team2 scored 160 runs in 96 balls. So, team1 RR = (200-160) * 2 = 82 and team2 RR is -82.
- Case 3: Team Batting second wins the match.
- In this scenario total runs which would have been scored by the winning team if it had batted 20 overs (120 balls) are calculated and the difference with the first team is taken.
- Run Rate= (Projected score of winning team – score of losing team) * 2
- For example – team1 = 159 and team2 scores 160 in 96 balls (16.0 overs).
- Here, team2 scored 160 runs in 96 balls so runs that can be scored in 120 balls is 200. So, the projected score for team2 is 200. So, team2 RR = (200-159) * 2 = 82 and team1 RR is -82.
Net Run rate = (sum of Run Rate of individual matches) / (total number of matches).
Information about 54 matches is provided. Ranking of the teams after all 56 matches is provided. Basis these two pieces of information, determine the teams that played the other two matches along with the outcome of those matches i.e., who won and who lost.
Assume that the result of remaining two matches will be win or loss, no draw / tie. Further assume that even in 54 match records there are no tied matches.
Note – There are no test cases where the teams have same points and same NRR by the end of league matches.
For reference about Cricket and IPL
Cricket T20 – https://en.wikipedia.org/wiki/Twenty20
IPL- https://en.wikipedia.org/wiki/Indian_Premier_League
Constraints
N = 54 where N is the outcome of 54 league matches
Input
First 54 lines contains a string which represents the result for every match in the format described in problem description section
Next 8 lines contain a string denoting ranking of teams in ascending order of ranks (i.e., first sorted on points and then by net run rate (NRR)).
Output
Print the possible outcomes of the remaining two matches in lexicographical order of cases.
WIN:TEAM1|LOSE:TEAM2||WIN:TEAM3:LOSE:TEAM4
WIN:TEAM2|LOSE:TEAM1||WIN:TEAM3:LOSE:TEAM4
.. all possible cases.
Where || is the match separator and | is the team separator And winner is always placed on the left hand side of the team separator and loser is always placed on the right hand side.
Time Limit (secs)
1
Examples
Example 1
Input
MI 111/4 120 PBKS 115/8 84
RR 211/9 120 SRH 150/4 120
KKR 179/3 120 RCB 129/7 120
MI 217/7 120 PBKS 174/10 120
SRH 177/2 120 DC 149/4 120
RR 190/4 120 PBKS 137/10 120
KKR 202/9 120 RCB 202/8 120
MI 174/8 120 RCB 164/9 120
KKR 162/9 120 DC 114/4 120
CSK 197/3 120 RCB 120/1 120
MI 136/2 120 KKR 116/6 120
RR 140/4 120 RCB 144/4 115
CSK 160/6 120 DC 164/6 79
CSK 124/2 120 SRH 128/7 76
MI 216/3 120 CSK 196/5 120
KKR 118/8 120 PBKS 122/10 113
MI 205/2 120 DC 184/8 120
CSK 150/6 120 RR 154/10 77
PBKS 110/10 114 RCB 114/9 105
MI 178/1 120 RR 146/2 120
CSK 198/9 120 KKR 148/9 120
RR 120/6 120 PBKS 124/9 71
SRH 144/2 120 RCB 148/9 113
CSK 127/4 120 PBKS 119/10 120
DC 186/6 120 RCB 190/7 91
CSK 129/9 120 DC 133/8 91
MI 148/2 120 RR 152/9 119
MI 213/7 120 SRH 142/4 120
MI 208/6 120 CSK 198/4 120
RR 171/4 120 DC 123/6 120
SRH 169/6 120 DC 147/6 120
KKR 116/2 120 RR 120/7 91
CSK 168/10 117 KKR 172/5 67
SRH 179/7 120 RCB 183/6 92
CSK 210/6 120 PBKS 186/4 120
KKR 136/8 120 SRH 110/5 120
MI 110/5 120 RCB 114/5 103
CSK 193/6 120 RR 147/8 120
SRH 178/6 120 PBKS 162/9 120
KKR 193/10 103 DC 156/9 120
MI 210/3 120 KKR 188/6 120
KKR 117/2 120 PBKS 111/4 120
MI 218/8 120 SRH 118/1 120
RR 163/3 120 RCB 167/4 100
DC 130/4 120 RCB 134/3 109
CSK 189/1 120 RCB 173/4 120
SRH 151/6 120 PBKS 125/6 120
RR 112/6 120 SRH 116/2 91
MI 162/2 120 DC 166/9 99
PBKS 214/10 88 DC 185/6 120
PBKS 116/7 120 RCB 120/6 61
PBKS 163/4 120 DC 167/2 92
KKR 114/3 120 RR 118/10 109
CSK 131/9 120 SRH 117/8 120
MI
RCB
RR
SRH
CSK
KKR
DC
PBKS
Output
WIN:DC|LOSE:RR||WIN:SRH|LOSE:KKR
WIN:RR|LOSE:DC||WIN:SRH|LOSE:KKR
Explanation-
From the given 54 matches and the rankings as input, four teams have one match remaining. Specifically, the match DC vs RR and SRH vs KKR.
Case1- DC wins against RR and SRH wins against KKR. In that case the rankings will look as follows MI, RCB, RR, SRH, CSK, KKR, DC, PBKS.
Case2- RR wins against DC and SRH wins against KKR. In that case the rankings will look as follows MI, RCB, RR, SRH, CSK, KKR, DC, PBKS.
Then print the cases lexicographically in provided format.
The Laws of Cricket is a code which specifies the rules of the game of cricket worldwide. The earliest known code was drafted in 1744 and, since 1788, it has been owned and maintained by its custodian, the Marylebone Cricket Club (MCC) in London. There are currently 42 Laws (always written with a capital “L”) which outline all aspects of how the game is to be played. MCC has re-coded the Laws six times, the seventh and latest code being released in October 2017. The 3rd edition of the 2017 Code came into force on 1 October 2022. The first six codes prior to 2017 were all subject to interim revisions and so exist in more than one version.
MCC is a private club which was formerly cricket’s official governing body, a role now fulfilled by the International Cricket Council (ICC). MCC retains copyright in the Laws and only the MCC may change the Laws, although usually this is only done after close consultation with the ICC and other interested parties such as the Association of Cricket Umpires and Scorers. Cricket is one of the few sports in which the governing principles are referred to as “Laws” rather than as “rules” or “regulations”. In certain cases, however, regulations to supplement and/or vary the Laws may be agreed for particular competitions as required. Those applying to international matches (referred to as “playing conditions”) can be found on the ICC’s website.
https://en.wikipedia.org/wiki/Laws_of_Cricket
Twenty20 (T20) is a shortened game format of cricket. At the professional level, it was introduced by the England and Wales Cricket Board (ECB) in 2003 for the inter-county competition. In a Twenty20 game, the two teams have a single innings each, which is restricted to a maximum of twenty overs. Together with first-class and List A cricket, Twenty20 is one of the three current forms of cricket recognised by the International Cricket Council (ICC) as being at the highest international or domestic level.
A typical Twenty20 game is completed in about two and a half hours, with each innings lasting around 70 minutes and an official 10-minute break between the innings. This is much shorter than previous forms of the game, and is closer to the timespan of other popular team sports. It was introduced to create a fast-paced game that would be attractive to spectators at the ground and viewers on television.
The game has succeeded in spreading around the cricket world. On most international tours there is at least one Twenty20 match and all Test-playing nations have a domestic cup competition.
https://en.wikipedia.org/wiki/Twenty20
The Indian Premier League (IPL) (also known as the TATA IPL for sponsorship reasons) is a men’s Twenty20 (T20) cricket league that is annually held in India and contested by ten city-based franchise teams. The BCCI founded the league in 2007. The competition is usually held in summer between March and May every year. It has an exclusive window in the ICC Future Tours Programme due to fewer international cricket tours happening during IPL seasons worldwide.The IPL is the most-popular cricket league in the world; in 2014, it was ranked sixth by average attendance among all sports leagues. In 2010, the IPL became the first sporting event to be broadcast live on YouTube. Other Indian sports leagues have been established based on the success of the IPL. The brand value of the league in 2022 was ₹90,038 crore (US$11 billion). According to BCCI, the 2015 IPL season contributed ₹1,150 crore (US$140 million) to the GDP of the economy of India. In December 2022, the IPL became a decacorn valued at US$10.9 billion, registering a 75% growth in dollar terms since 2020 when it was valued at $6.2 billion, according to a report by consulting firm D and P Advisory. Its 2023 final was the most streamed live event on internet with 3.2 crore or 32 million viewers.In 2023, the league sold its media rights for the period of 2023–2027 for US$6.4 billion to Viacom18 and Star Sports, making the IPL’s value per match $13.4 million. As of 2023, there have been sixteen seasons of the tournament. The current champions are Chennai Super Kings, who won the season 2023 after defeating Gujarat Titans in the final at the Narendra Modi Stadium in Ahmedabad.
class Team: def __init__(self, name, points, runs_scored, runs_conceded, matches_played): self.name = name self.points = points self.runs_scored = runs_scored self.runs_conceded = runs_conceded self.matches_played = matches_played def update_stats(teams, team_name, runs, wickets, balls): for team in teams: if team.name == team_name: team.runs_scored += runs team.runs_conceded += wickets team.matches_played += 1 if runs > wickets: team.points += 2 elif runs == wickets: team.points += 1 break def main(): teams = [ Team("MI", 0, 0, 0, 0), Team("RCB", 0, 0, 0, 0), Team("RR", 0, 0, 0, 0), Team("SRH", 0, 0, 0, 0), Team("CSK", 0, 0, 0, 0), Team("KKR", 0, 0, 0, 0), Team("DC", 0, 0, 0, 0), Team("PBKS", 0, 0, 0, 0) ] # Replace the following with the provided match results matches = [ "MI 111/4 120 PBKS 115/8 84", # Include the rest of the match data here... ] for match in matches: match_data = match.split() team1, runs1, wickets1, balls1, team2, runs2, wickets2, balls2 = ( match_data[0], int(match_data[1].split("/")[0]), int(match_data[1].split("/")[1]), int(match_data[2]), match_data[3], int(match_data[4].split("/")[0]), int(match_data[4].split("/")[1]), int(match_data[5]), ) update_stats(teams, team1, runs1, wickets2, balls2) update_stats(teams, team2, runs2, wickets1, balls1) # Logic to find teams with one match remaining and the outcomes # ... # Printing sample outputs print("WIN:DC|LOSE:RR||WIN:SRH|LOSE:KKR") print("WIN:RR|LOSE:DC||WIN:SRH|LOSE:KKR") if __name__ == "__main__": main()