Program plan:
- Import random.
- Define “main()” function.
- Call the function “printIntro()”.
- Get input using “getInputs()” function.
- Call function “simNMatches()” to find the matches.
- Call function “printSummary()”.
- Define a function “printIntro()”.
- Print the statements.
- Define a function “getInputs()”.
- Get the value for simulation parameter “a” from the user.
- Get the value for simulation parameter “b” from the user.
- Get the value for simulation parameter “n” from the user.
- Returns the three simulation parameters.
- Define a function “simNMatches()”.
- Initialize values.
- Iterate a for loop up to “n”.
- Call the function “simOneMatch()”.
- If condition.
- Increment the value of “matchA” by 1.
- Else.
- Increment the value of “matchB” by 1.
- Return the value of “matchA” and “matchB”.
- Define a function “simOneMatch()”.
- Initialize the values “wisnA” and “WinsB” as 0.
- Accumulate number of games.
- Iterate a while loop.
- Call a function “simOneGame()”.
- If condition.
- Increment the value of “winA” by 1.
- Increment the value of “x” by 1.
- Else condition.
- Increment the value of “winsB” by 1.
- Increment the value of “x” by 1.
- Return the value of “winsA” and “winsB”.
- Define a function “simOneGame()”.
- Call a function “findService()” to a value “serving”.
- Initialize values.
- Iterate a while loop.
- If condition “serving == "A"”.
- If condition “random() < probA”.
-
- Increment the value of “scoreA” by 1.
- If not the condition.
-
- Assign a value “B” to a variable “serving”.
- Else if condition.
-
- If condition “random() < probB” increment the value of “scoreB” by 1.
- Increment the value of “scoreB” by 1.
- If not the condition.
-
- assign a value “A” to a variable “serving”
- Return “scoreA”, “scoreB”..
- assign a value “A” to a variable “serving”
- If condition “serving == "A"”.
- Define a function “findService()”.
- If condition “x % 2 == 0”.
- Return “A”.
-
-
- If not the condition.
- Return “B”.
- If not the condition.
-
-
- Return “A”.
- If condition “x % 2 == 0”.
- Define a function “gameOver()”.
- If the condition satisfies.
- Return the value of “b”.
-
-
-
- Else if condition “b == 0 and a == 7”.
- Return the value of “a”.
- Else if condition “abs(a-b) >= 2”.
- Return “True”.
- If not the condition
- Return a value “False”.
- Else if condition “b == 0 and a == 7”.
-
-
-
- Return the value of “b”.
- If the condition satisfies.
- Define a function “printSummary()”.
- Add the value of “matchA” and “matchB” and store in a variable “n”.
- Print the value of “n”.
- Print the value of “matchA”.
- Print the value of “matchB”.
- main for function call
This is a revision of the racquetball simulation. The problem has two major changes:
The program has to calculate results for best of n games.
First service is alternated between A and B. The odd numbered games of the match are served first by A and even numbered games are first served by B.
Explanation of Solution
Program:
#import random
from random import random
#define main() function
def main():
#call the function printIntro()
printIntro()
#get input using getInputs() function
probA, probB, n = getInputs()
#calling function simNMatches() to find the matches
matchA, matchB = simNMatches(n, probA, probB)
#call function printSummary()
printSummary(matchA, matchB)
#define a function printIntro()
def printIntro():
print("This program simulates a game of racquetball between two")
print('players called "A" and "B". The abilities of each player is')
print("indicated by a probability (a number between 0 and 1) that")
print("reflects the likelihood of a player winning the serve.")
print("Player A has the first serve.")
#define a function getInputs()
def getInputs():
#get the value for simulation parameter ‘a’ from the user
a = eval(input("What is the prob. player A wins a serve? "))
#get the value for simulation parameter ‘b’ from the user
b = eval(input("What is the prob. player B wins a serve? "))
#get the value for simulation parameter ‘n’ from the user
n = eval(input("How many games to simulate? "))
#Returns the three simulation parameters
return a, b, n
#define a function simNMatches()
def simNMatches(n, probA, probB):
#initialize values
matchA = matchB = 0
#iterate a for loop up to n
for i in range(n):
#call the function simOneMatch()
winsA, winsB = simOneMatch(probA, probB)
#if condition
if winsA > winsB:
#increment the value of matchA by 1
matchA = matchA + 1
#else
else:
#increment the value of matchB by 1
matchB = matchB + 1
#return the value of matchA and matchB
return matchA, matchB
#define a function simOneMatch()
def simOneMatch(probA, probB):
#initialize the values wisnA and WinsB as 0
winsA = winsB = 0
#accumulate number of games
x = 1
#iterate a while loop
while winsA !=2 and winsB !=2:
#calling a function simOneGame()
scoreA, scoreB = simOneGame(probA, probB, x)
#if condition
if scoreA > scoreB:
#increment the value of winA by 1
winsA = winsA + 1
#increment the value of x by 1
x = x+1
#else condition
else:
#increment the value of winsB by 1
winsB = winsB + 1
#increment the value of x by 1.
x = x+1
#return the value of winsA and winsB
return winsA, winsB
#define a function simOneGame()
def simOneGame(probA, probB, x):
#call a function findService() to a value “serving”
serving = findService(x)
#initialize values
scoreA = 0
scoreB = 0
#iterate a while loop.
while not gameOver(scoreA, scoreB):
#if condition
if serving == "A":
#if condition
if random() < probA:
#increment the value of scoreA by 1
scoreA = scoreA + 1
#if not the condition
else:
#assign a value “B” to a variable “serving”
serving = "B"
#else if condition
elif serving == "B":
#if condition
if random() < probB:
#increment the value of scoreB by 1
scoreB = scoreB + 1
#if not the condition
else:
#assign a value “A” to a variable “serving”
serving = "A"
#return
return scoreA, scoreB
#define a function findService()
def findService(x):
#if condition
if x % 2 == 0:
#return “A”
return "A"
#if not the condition
else:
#return “B”
return "B"
#define a function gameOver()
def gameOver(a, b):
#if the condition satisfies
if a == 0 and b == 7:
#return the value of “b”
return b == 7
#else if condition
elif b == 0 and a == 7:
#return the value of a
return a == 7
#else if condition
elif abs(a-b) >= 2:
#return “True”
return True
#if not the condition
else:
#return a value “False”
return False
#define a function printSummary()
# Prints a summary of wins for each players
def printSummary(matchA, matchB):
#add the value of matchA and matchB and store in a variable n.
n = matchA + matchB
#print the value of n
print("\nGames simulated: ", n)
#print the value of matchA
print("Wins for A: {0} ({1:0.1%})".format(matchA, matchA/n))
#print the value of matchB
print("Wins for B: {0} ({1:0.1%})".format(matchB, matchB/n))
# main for function call
if __name__ == '__main__': main()
Output:
This program simulates a game of racquetball between two
players called "A" and "B". The abilities of each player is
indicated by a probability (a number between 0 and 1) that
reflects the likelihood of a player winning the serve.
Player A has the first serve.
What is the prob. player A wins a serve? 0.5
What is the prob. player B wins a serve? 0.7
How many games to simulate? 2
Games simulated: 2
Wins for A: 1 (50.0%)
Wins for B: 1 (50.0%)
Want to see more full solutions like this?
Chapter 9 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- There is an upcoming football tournament, and the n participating teams are labelled from 1 to n. Each pair of teams will play against each other exactly once. Thus, a total of matches will be held, and each team will compete in n − 1 of these matches. There are only two possible outcomes of a match: 1. The match ends in a draw, in which case both teams will get 1 point. 2. One team wins the match, in which case the winning team gets 3 points and the losing team gets 0 points. Design an algorithm which runs in O(n2 ) time and provides a list of results in all matches which: (a) ensures that all n teams finish with the same points total, and (b) includes the fewest drawn matches among all lists satisfying (a). Do not write the code, give steps and methods. Explain the steps of algorithm, and the logic behind these steps in plain English.Please give time complexity. list of results mean Any combination of wins, losses and draws. You may wish to view this as a mapping from the set of…arrow_forwardIn a tournament, there are n participating teams are labelled from 1 to n. Each pair of teams will play against each other exactly once. Thus, a total of [n(n-1)/2] matches will be held, and each team will compete in n − 1 of these matches. There are only two possible outcomes of a match: 1. The match ends in a draw, in which case both teams will get 1 point. 2. One team wins the match, in which case the winning team gets 3 points and the losing team gets 0 points. Design an algorithm which runs in O(n2 ) time and provides a list of results in all [n(n-1)/2] matches which: (a) ensures that all n teams finish with the same points total, and (b) includes the fewest drawn matches among all lists satisfying (a). Do not write the code, give steps and methods. Explain the steps of algorithm, and the logic behind these steps in plain Englisharrow_forwardIn a tournament, there are n participating teams are labelled from 1 to n. Each pair of teams will play against each other exactly once. Thus, a total of [n(n-1)/2] matches will be held, and each team will compete in n − 1 of these matches. There are only two possible outcomes of a match: 1. The match ends in a draw, in which case both teams will get 1 point. 2. One team wins the match, in which case the winning team gets 3 points and the losing team gets 0 points. Design an algorithm which runs in O(n2 ) time and provides a list of results in all [n(n-1)/2] matches which: (a) ensures that all n teams finish with the same points total, and (b) includes the fewest drawn matches among all lists satisfying (a). Do not write the code, give steps and methods. Explain the steps of algorithm, and the logic behind these steps in plain English. PLease give the total time complexity.arrow_forward
- With T=4, n=12 and A=(3,5,8,8,9,16,29,41,50,63,64,67). Draw the corresponding walkthrough as shown in P.146.arrow_forwardThe game of Chomp is played by two players. In this game, cookies are laid out on a rectangular grid. The cookie in the top-left position is poisoned. The two players take turns making moves; at each move, a player is required to eat a remaining cookie, together with all cookies to the right and/or below (that is all the remaining cookies in the rectangle, in which the first cookie eaten is the top left corner). The loser is the player who has no choice but to eat the poisoned cookie. Prove that if the board is square (and bigger than 1 × 1) then the first player has a winning strategy.arrow_forwardA wrestling tournament has 256 players. Each match includes 2 players. The winner each match will play another winner in the next round. The tournament is single elimination, so no one will wrestle after they lose. The 2 players that are undefeated play in the final game, and the winner of this match wins the entire tournament. How would you determine the winner? Here is one algorithm to answer this question. Compute 256/2 = 128 to get the number of pairs (matches) in the first round, which results in 128 winners to go on to the second round. Compute 128/2 = 64, which results in 64 matches in the second round and 64 winners, to go on to the third round. For the third round compute 64/2 = 32, so the third round has 64 matches, and so on. The total number of matches is 128 + 64 + 32+ .... Finish this process to find the total number of matches.arrow_forward
- You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack. A queen is standing on an chessboard. The chess board's rows are numbered from to , going from bottom to top. Its columns are numbered from to , going from left to right. Each square is referenced by a tuple, , describing the row, , and column, , where the square is located. The queen is standing at position . In a single move, she can attack any square in any of the eight directions (left, right, up, down, and the four diagonals). In the diagram below, the green circles denote all the cells the queen can attack from : There are obstacles on the chessboard, each preventing the queen from attacking any square beyond it on that path. For example, an obstacle at location in the diagram above prevents the queen from attacking cells , , and : Given the queen's position and the locations of all the obstacles, find and print the number of…arrow_forwardCorrect answer will upvoted else downvoted Petya found out with regards to another game "Kill the Dragon". As the name recommends, the player should battle with mythical beasts. To overcome a mythical serpent, you need to kill it and shield your palace. To do this, the player has a crew of n legends, the strength of the I-th saint is equivalent to man-made intelligence. As per the principles of the game, precisely one saint should go kill the mythical serpent, all the others will shield the palace. On the off chance that the mythical serpent's protection is equivalent to x, you need to send a saint with a strength of essentially x to kill it. Assuming the winged serpent's assault power is y, the absolute strength of the saints protecting the palace ought to be ssentially y. The player can build the strength of any legend by 1 for one gold coin. This activity should be possible quite a few times. There are m winged serpents in the game, the I-th of them has protection equivalent to…arrow_forwardInstrument FrequencyCounter to use Stopwatch and StdDraw to make a plot where the x-axis is the number of calls on get() or put() and the y-axis is the total running time, with a point plotted of the cumulative time after each call. Run your program for Tale of Two Cities using SequentialSearchST and again using BinarySearchST and discuss the results. Note : Sharp jumps in the curve may be explained by caching, which is beyond the scope of this question.arrow_forward
- Correct answer will be upvoted else downvoted. Computer science. You and your companions live in n houses. Each house is situated on a 2D plane, in a point with integer organizes. There may be various houses situated in a similar point. The chairman of the city is requesting you for places for the structure from the Eastern show. You need to track down the number of spots (focuses with integer arranges), so the outline distance from every one of the houses to the show is insignificant. The display can be inherent a similar point as some house. The distance between two focuses (x1,y1) and (x2,y2) is |x1−x2|+|y1−y2|, where |x| is the outright worth of x. Input First line contains a solitary integer t (1≤t≤1000) — the number of experiments. The principal line of each experiment contains a solitary integer n (1≤n≤1000). Next n lines portray the places of the houses (xi,yi) (0≤xi,yi≤109). It's reliable that the amount of everything n doesn't surpass 1000. Output For…arrow_forwardThere are 2016 passengers about to board a plane, numbered 1 through 2016 in that order. Each passenger is assigned to a seat equal to his or her own number. However, the first passenger disregards instructions and instead of sitting in seat number 1, chooses and sits down in a randomly chosen seat. Each subsequent passenger acts according to the following scheme: if their assigned seat is available, they will sit there; otherwise, they will pick at random from the remaining available seats and sit there. What is the probability that the 1512th passenger ends up sitting in their assigned seat? A. 1/2016 B. 1/2 C. 5/8 D. 3/4 E. None of the abovearrow_forwardDingyu is playing a game defined on an n X n board. Each cell (i, j) of the board (1 2, he may only go to (2, n).) The reward he earns for a move from cell C to cell D is |value of cell C – value of cell D|. The game ends when he reaches (n, n). The total reward - is the sum of the rewards for each move he makes. For example, if n = 1 2 and A = 3 the answer is 4 since he can visit (1, 1) → (1, 2) → (2, 2), and no other solution will get a higher reward. A. Write a recurrence relation to express the maximum possible reward Dingyu can achieve in traveling from cell (1, 1) to cell (n, n). Be sure to include any necessary base cases. B. State the asymptotic (big-O) running time, as a function of n, of a bottom-up dynamic programming algorithm based on your answer from the previous part. Briefly justify your answer. (You do not need to write down the algorithm itself.)arrow_forward
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education