5.5 KiB
title |
---|
Golf Code |
Remember to use Read-Search-Ask
if you get stuck. Try to pair program and write your own code
Problem Explanation:
In the game of golf each hole has a par meaning the average number of strokes a golfer is expected to make in order to sink the ball in a hole to complete the play. Depending on how far above or below par your strokes are, there is a different nickname.
Your function will be passed par and strokes arguments. You've to return the correct string according to this table which lists the strokes in order of priority; top (highest) to bottom (lowest):
Strokes | Return |
---|---|
1 | "Hole-in-one!" |
<= par - 2 | "Eagle" |
par - 1 | "Birdie" |
par | "Par" |
par + 1 | "Bogey" |
par + 2 | "Double Bogey" |
>= par + 3 | "Go Home!" |
par and strokes will always be numeric and positive.
- Change the code below
// Only change code below this line
and above// Only change code above this line
. - Ensure that you're editing the inside of the
golfScore
function. - You will have to make the function return exactly the same string as shown shown in the table, depending on the value of the parameters par and strokes that are passed to your function.
Hint: 1
+number -number
can be used to increase or decrease a parameter in your condition.
try to solve the problem now
Hint: 2
You use if / else if
chains to return different values in different scenarios.
try to solve the problem now
Hint: 3
Control the flow of your function based on the tables order of priority - top (highest) to bottom (lowest) to return matching string values.
try to solve the problem now
Spoiler Alert!
Solution ahead!
Basic Code Solution:
function golfScore(par, strokes) {
// Only change code below this line
if (strokes == 1){
return "Hole-in-one!";
} else if (strokes <= par -2){
return "Eagle";
} else if (strokes == par -1) {
return "Birdie";
} else if (strokes == par) {
return "Par";
} else if (strokes == par +1) {
return "Bogey";
} else if (strokes == par +2) {
return "Double Bogey";
} else {
return "Go Home!";
}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
Code Explanation:
- Compare the parameters par and strokes to return appropriate string values.
if / else if
chain is used for flow control.- String "Go Home!" is returned for every condition where strokes is greater than or equal to par + 3.
Alternative code solution:
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
// Only change code below this line
if (strokes == 1){
return names[0];
}
else if (strokes <= par-2){
return names[1];
}
else if (strokes == par -1){
return names[2];
}
else if (strokes == par){
return names[3];
}
else if (strokes == par +1){
return names[4];
}
else if (strokes == par +2){
return names[5];
}
else {return names[6];}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
·Run at repl.it
Code explanation
Since we already have an array defined in the variable names
we can take advantage of it and use it for our return statements using indexes (eg: names[0] is the first one
). That way, if you ever need to change a specific result you wouldn't need to look for it inside the function, it'd be at the beginning, in your array.