Difference between revisions of "CSC111 Homework 8 2015"

From dftwiki3
Jump to: navigation, search
Line 27: Line 27:
 
Each line contains 2 letters, glued to each other.  There are no spaces between them.  There are only 2 letters per line.  Each letter is guaranteed to be R, P, or S.  Nothing else will be found in the file.  There might be space before or after the 2 letters, though.
 
Each line contains 2 letters, glued to each other.  There are no spaces between them.  There are only 2 letters per line.  Each letter is guaranteed to be R, P, or S.  Nothing else will be found in the file.  There might be space before or after the 2 letters, though.
 
<br />
 
<br />
Your program will read the file and output only 1 line.  This line will either say "Player 1 wins", "Player 2 wins", or "Tie," depending on whether Player 1 (the first letter on each line) wins, or Player 2 (the second letter on each line of the text file) wins.
+
Your program will read the file and output only 1 line containing 1 number.  This number will either be 1, 2, or 0.  1 will indicate that Player 1 (the first letter on the line) wins, 2 will indicate that Player 2 (the second letter) wins, and 0 will indicate a tie.
 
<br />
 
<br />
In the example above, we have the following 4 ties, Player 1 wins 3 times, and Player 2 wins once.  The output of your program should be ''Player 1 wins'' since Player 1 has won.
+
In the example above, we have the following: 4 ties, Player 1 wins 3 times, and Player 2 wins once.  The output of your program should be  
 +
 +
1
 +
 +
since Player 1 has won.
 
<br />
 
<br />
 
Submit your program to Moodle, Section HW 8 PB 1.
 
Submit your program to Moodle, Section HW 8 PB 1.
Line 55: Line 59:
 
</source>
 
</source>
 
<br />
 
<br />
Your program will output "Player 1 wins" because the first 3 lines correspond to 3 plays when Player 1 wins.  After your program has processed the letters from the 3rd line of the file, the counter associated with Player 1 will be 3 and that of Player 2 will be 0.  The difference is 3, and your program will stop, indicating that Player 1 has won.  You see that the file contains additional lines that would make Player 2 wins in the end, but we are only interested in the case where the difference between Player 1 and Player 2 is 3 points.
+
Your program will output '''1''' because the first 3 lines correspond to 3 plays when Player 1 wins.  After your program has processed the letters from the 3rd line of the file, the counter associated with Player 1 will be 3 and that of Player 2 will be 0.  The difference is 3, and your program will stop, indicating that Player 1 has won.  You see that the file contains additional lines that would make Player 2 wins in the end, but we are only interested in the case where the difference between Player 1 and Player 2 reaches 3 points.
 
<br />
 
<br />
The file will always contain enough lines to create a difference of 3 points between the two players.
+
You an assume that the file will always contain enough lines to create a difference of 3 points between the two players.
 
<br />
 
<br />
Once again, make sure your program only outputs one of three possible string: "Player 1 wins", "Player 2 wins", or "Tie".
+
Once again, make sure your program only outputs one of three possible numbers: 1, 2, or 0.
 
<br />
 
<br />
 
Submit your program to Moodle, Section HW 8 PB 2
 
Submit your program to Moodle, Section HW 8 PB 2
Line 91: Line 95:
 
</source>
 
</source>
 
<br />
 
<br />
Your program will stop when the difference in points between Player 1 and Player 2 is 3.
+
Your program will stop when the difference in points between Player 1 and Player 2 is '''3'''.  There will always be enough lines with the right plays in the text file to make the difference in points reach 3.
 
<br />
 
<br />
 
Submit your program on Moodle in the HW 8 PB 3 section.
 
Submit your program on Moodle in the HW 8 PB 3 section.
Line 113: Line 117:
 
# or when the text file has been exhausted, and there are no more lines to read.  In this case, the difference between the two players' points could be 0, 1, 2 or 3.
 
# or when the text file has been exhausted, and there are no more lines to read.  In this case, the difference between the two players' points could be 0, 1, 2 or 3.
 
<br />
 
<br />
The output of your program '''is different from the previous programs'''.  Your program should now output only 2 numbers, on the same line, separated by a space.  The first number is 1 if Player 1 wins, 2 if Player 2 wins, and 0 if it's a tie.  The second number is the number of plays they had to go through to get a difference in points of 3.  For example:
+
The output of your program '''is different from the previous programs'''.  Your program should now output 2 numbers, on the same line, separated by a space.  The first number is 1 if Player 1 wins, 2 if Player 2 wins, and 0 if it's a tie.  The second number is the number of plays they had to go through to get a difference of 3 points.  For example:
  
 
   1 10
 
   1 10
Line 121: Line 125:
 
   0 1000
 
   0 1000
  
would indicate that the players played for 1000 rounds, and finished with a tie.
+
would indicate that the players played for 1000 rounds, and finished with a tie.  Because they finish with a difference in point that is less than 3, 1000 must be the number of valid lines in the text file.
 
<br />
 
<br />
 
Submit your program on Moodle, in the HW 8 PB 4 section.   
 
Submit your program on Moodle, in the HW 8 PB 4 section.   
 
<br />
 
<br />
You will not be able to evaluate this program.  Make sure you test it thoroughly.  For example, here are special cases your program should be able to handle.
+
<font color="magenta">You will not be able to evaluate this program</font>.  Make sure you test it thoroughly.   
 +
 
 +
Here are special cases your program should be able to handle.
 
# the text file is empty or contains only invalid lines.  In this case the output should be 0 0.
 
# the text file is empty or contains only invalid lines.  In this case the output should be 0 0.
 
# the text file contains 3 valid lines, and Player 1 (conversely Player 2) wins on all three lines.  The output in this case should be 1 3.
 
# the text file contains 3 valid lines, and Player 1 (conversely Player 2) wins on all three lines.  The output in this case should be 1 3.

Revision as of 08:38, 24 March 2015

--D. Thiebaut (talk) 09:30, 24 March 2015 (EDT)


<showafterdate after="20150326 17:00" before="20150606 00:00">

This homework is due on 03/31/2015 at 12:55 p.m..



Problem #1


Write a program called hw8_1.py that reads a text file called "plays.txt" that contains the plays made by two players, Player 1 and Player 2, who are challenging each other with a game of Rock, Paper, Scissors.

Here is an example of the possible contents of plays.txt:

RR
RS
SS
PS
PR
PP
PR
SS


Each line contains 2 letters, glued to each other. There are no spaces between them. There are only 2 letters per line. Each letter is guaranteed to be R, P, or S. Nothing else will be found in the file. There might be space before or after the 2 letters, though.
Your program will read the file and output only 1 line containing 1 number. This number will either be 1, 2, or 0. 1 will indicate that Player 1 (the first letter on the line) wins, 2 will indicate that Player 2 (the second letter) wins, and 0 will indicate a tie.
In the example above, we have the following: 4 ties, Player 1 wins 3 times, and Player 2 wins once. The output of your program should be

1

since Player 1 has won.
Submit your program to Moodle, Section HW 8 PB 1.
Submit your program to Moodle. You will be able to evaluate this program yourself.

Problem 2


Same setup as Problem 1. Your program should be called hw8_2.py. This time your program will stop reading the information in a text file (also called plays.txt) as soon as the difference in points between Player1 and Player2 is 3. For example, assume the file contains:

RS
RS
RS
SR
SR
SR
SR
SR
SR
SR
SR
SS


Your program will output 1 because the first 3 lines correspond to 3 plays when Player 1 wins. After your program has processed the letters from the 3rd line of the file, the counter associated with Player 1 will be 3 and that of Player 2 will be 0. The difference is 3, and your program will stop, indicating that Player 1 has won. You see that the file contains additional lines that would make Player 2 wins in the end, but we are only interested in the case where the difference between Player 1 and Player 2 reaches 3 points.
You an assume that the file will always contain enough lines to create a difference of 3 points between the two players.
Once again, make sure your program only outputs one of three possible numbers: 1, 2, or 0.
Submit your program to Moodle, Section HW 8 PB 2

Problem 3


Your program will be called hw8_3.py

It is similar to the solution for Problem 2, but this time the text file may contain invalid lines. An invalid line is a line that does not contain 2 letters only, that are each, either R, P, or S, upper or lower case.

Examples of invalid lines:

RRR
R
S
         
12
R:S
R-S


Examples of valid lines:

RR
RS
rs
SS       
sP


Your program will stop when the difference in points between Player 1 and Player 2 is 3. There will always be enough lines with the right plays in the text file to make the difference in points reach 3.
Submit your program on Moodle in the HW 8 PB 3 section.

Problem 4


Write a program called hw8_4.py, and modify the rules of the game so that a new "figure" is added: the Hole. The hole is made by putting one's hand in the shape of a cylinder.
The new rules with the hole are as followed:

  • R H: Hole wins, as Rock falls in Hole
  • H H: Tie
  • S H: Hole wins, as Scissors fall in Hole
  • H P: Paper wins, as paper covers Hole


You will have noticed that the new rules are unfair. Holes wins more often than it loses. That's ok for this game.
The text file, still called plays.txt will now contains text lines, some valid, some invalid, where the valid lines contain only 2 character, upper or lower case, each either 'R', 'P', 'S', or 'H'.
Make your program stop when

  1. the difference in point between Player 1 and Player 2 is 3, or
  2. or when the text file has been exhausted, and there are no more lines to read. In this case, the difference between the two players' points could be 0, 1, 2 or 3.


The output of your program is different from the previous programs. Your program should now output 2 numbers, on the same line, separated by a space. The first number is 1 if Player 1 wins, 2 if Player 2 wins, and 0 if it's a tie. The second number is the number of plays they had to go through to get a difference of 3 points. For example:

 1 10

would indicate that Player 1 wins after 10 rounds.

 0 1000

would indicate that the players played for 1000 rounds, and finished with a tie. Because they finish with a difference in point that is less than 3, 1000 must be the number of valid lines in the text file.
Submit your program on Moodle, in the HW 8 PB 4 section.
You will not be able to evaluate this program. Make sure you test it thoroughly.

Here are special cases your program should be able to handle.

  1. the text file is empty or contains only invalid lines. In this case the output should be 0 0.
  2. the text file contains 3 valid lines, and Player 1 (conversely Player 2) wins on all three lines. The output in this case should be 1 3.
  3. the text file contains 10000 lines of the form RR. The output should be 0 10000.


</showafterdate>