Challenge Counting Cards - thelastmile/FreeCodeCamp GitHub Wiki
Challenge Counting Cards
About Blackjack
In the casino game Blackjack, a player can gain an advantage over the house by keeping track of the relative number of high and low cards remaining in the deck. This is called Card Counting.
Having more high cards remaining in the deck favors the player. Each card is assigned a value according to the table below. When the count is positive, the player should bet high. When the count is zero or negative, the player should bet low.
Value | Cards |
---|---|
+1 | 2, 3, 4, 5, 6 |
0 | 7, 8, 9 |
-1 | 10, 'J', 'Q', 'K','A' |
Instructions
You will write a card counting function. It will receive a card parameter and increment or decrement the global count variable according to the card's value (see table). The function will then return the current count and the string "Bet" if the count is positive, or "Hold" if the count is zero or negative.
Example Output:
- -3 Hold
- 5 Bet
Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code.
Useful Links
- Challenge: Selecting from many options with Switch Statements
- Challenge: Chaining If Else Statements
- Challenge: Increment a Number with Javascript
Problem Explanation:
- Change the code below
// Only change code below this line
and up to// Only change code above this line
- Take note that you are editing the inside of the
cc
function - Use what you've learned to check the value of each
card
parameter passed into the function - Keep a running count of that number
- If the final count is 1 or greater, return # Hold
- If the final count is 0 or less, return # Bet
Hint: 1
- Use a
switch
(orelse if
) statement to count the value of each card.
Hint: 2
- Add/subtract the value of each card to variable
count
. If the card is worth 0, don't do anything!
Hint: 3
- After you've counted the cards, use an
if
statement to check the value ofcount
. Also, make sure your return has a space between the number and the string.
Spoiler Alert!
Solution ahead!
Code Solution:
function cc(card) {
// Only change code below this line
switch(card){
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 10:
case "J":
case "Q":
case "K":
case "A":
count--;
break;
}
if (count > 0){
return count + " Bet";
} else {
return count + " Hold";
}
// Only change code above this line
}
Code Explanation:
-
Checks the value of each card via a
switch
statement -
The variable
count
:- Increases by 1 if the card is a 2, 3, 4, 5, or 6
- Since 7, 8, and 9 aren't worth anything, we ignore those cards in our
switch
statement. - Decreases by 1 if the card is a 10, 'J', 'Q', 'K', or 'A'
-
Checks the value of
count
and returns the appropriate response
Example Run
cc(2);
runs- The
switch
statement hitscase 2
, jumps down and adds 1 to the variablecount
- The
switch
statement then hits thebreak
andcc(3);
runs - This cycle continues until the final call is made,
cc('A');
- After the
switch
statement, theif
statement checkscount
, which is now 0 - This then drops down to the
else
statement, which will return 0 Hold
Note As mentioned earlier, the switch
statement could have also been an else if
statement
Credits:
If you found this page useful, you can give thanks by copying and pasting this on the main chat: Thanks @leftynaut for your help with Checkpoint: Counting Cards
NOTE: Please add your username only if you have added any relevant main contents to the wiki page. (Please don't remove any existing usernames.)