scl enable python33 zsh
The quick brown fox jumped over the fence and then the fox jumped back over the fence.then your output should be:
The 1 and 1 back 1 brown 1 fence 1 fence. 1 quick 1 then 1 fox 2 jumped 2 over 2 the 3Note that uppercase is significant (The and the are different) and so is punctuation (fence and fence. are different). You must use a dictionary to keep track of word frequencies and then dump the dictionary to a list to sort it by word frequencies.
In the game of golf, players can rank themselves with a handicap. This is a number that basically tells you how good you are at the game. The lower your handicap, the better you are.
The US Golf Association has a very lengthy description of how you calculate a handicap. It may be found at http://www.usga.org/Handicapping.html if you're interested. I'm going to simplify it a bit. Here is how you calculate a handicap for a golfer:
where score is the player's score for the round, rating is the rating of the course on which the round was played, and slope is the slope of the course on which the round was played.
Your Strategy
Your strategy for solving this problem should be as follows:
Your Job
Your job is to write the program handicap.py. It should take two command line arguments:
python handicap.py score-file course-fileThe score-file is a file that contains scores. Each line of this file is in the following format:
Month Day Year Name Score CourseMonth is a number between 1 and 12. Day is a number between 1 and 31. You do not have to error check for legal month/day combinations (i.e. don't worry about 2/30). Year is the year (i.e. 1999, 2000). Name is a one-word name of a golfer, and Score is an integer score. Course is the name of a course, and may contain any number of words separated by white space. Although course is the last part of the line, you cannot assume that there will be only one space between each of the names in the course. Hence you will need to iterate through each of the names and concatenate them together, each separated by a space. The scores can be in any order, and there can be any number of golfers in the score file.
There are example score files in /home/bvanderz/courses/302/labs/lab3:
Course Three Ridges -- White Tees Rating 69.3 Slope 119 Par 72 |
This says that there is a course that's called ``Three Ridges -- White Tees'' with a rating of 69.3 and a slope of 119. You ignore the ``Par'' line, and the blank line after the ``Par'' line.
In both files (scores and courses) you should create a string for a course that is composed of each word separated by a space. For example, the following course specifications should be equivalent:
Course Three Ridges -- White Tees Course Three Ridges -- White Tees
Now, your program must read in both of these files. You may assume that they contain no errors and that they contain at least 20 scores for each golfer. Then print out the golfers and their handicaps, ordered by handicap (lowest first). Print out the handicap first (padded to 5 characters and two decimal places), and then the golfer's name.
For example:
UNIX> python handicap.py score1 courses 14.31 Jim UNIX> python handicap.py score2 courses 3.70 Phil 14.31 Jim UNIX> python handicap.py score3 courses 3.70 Phil 14.31 Jim UNIX> python handicap.py bigscore courses 2.58 Tiger 8.26 Phil 8.31 Sergio 9.63 David 9.77 Anika 10.12 Jose 18.12 Ernie 18.21 Colin 18.50 John 18.88 Se-Ri 39.55 KarrieA working executable is available at ~bvanderz/cs302/labs/lab3/handicap (it's a C++ implementation, not a Python implementation). If you set the environment variable PRINTDIFFS to be "yes", then the program will also print out each golfer's differential and date number (defined in step 4 below) or each score. You can use this to test yourself in case your computations do not seem to match those here. Note, you do not have to implement this feature. It is just included it so that you can help test your own code.
UNIX> setenv PRINTDIFFS yes UNIX> handicap score1 courses Jim Dnum: 743660 Differential: 17.76 Dnum: 743661 Differential: 17.76 Dnum: 743691 Differential: 14.91 Dnum: 743693 Differential: 14.91 Dnum: 743722 Differential: 17.76 Dnum: 743725 Differential: 17.76 Dnum: 743753 Differential: 14.91 Dnum: 743757 Differential: 14.91 Dnum: 743784 Differential: 17.76 Dnum: 743789 Differential: 17.76 Dnum: 743815 Differential: 14.91 Dnum: 743821 Differential: 14.91 Dnum: 743846 Differential: 17.76 Dnum: 743853 Differential: 17.76 Dnum: 743877 Differential: 14.91 Dnum: 743885 Differential: 14.91 Dnum: 743908 Differential: 17.76 Dnum: 743939 Differential: 14.91 Dnum: 743970 Differential: 17.76 Dnum: 744001 Differential: 14.91 14.31 Jim UNIX> setenv PRINTDIFFS no UNIX> handicap score1 courses 14.31 Jim UNIX>
Naming Your Files
Python Versus Java Comparison. In the past I also assigned this problem earlier in the semestr as a Java problem. My Python implementation took roughly 100 lines and my Java implementation took roughly 250 lines, for a 60% reduction in code.
Submit the following files: