Jump to content

javascript:switch


SAMLIKS
 Share

Recommended Posts

 

i am supposed to write a card counting function that It will receive a card parameter, which can be a number or a string, and increment or decrement the global count variable according to the card's value (see table). The function will then return a string with the current count and the string Bet if the count is positive, or Hold if the count is zero or negative. The current count and the player's decision (Bet or Hold) should be separated by a single space.

 

but the code doesn't seem to run,am being told that this must be done:

Hide   Copy Code
Cards Sequence 2, 3, 4, 5, 6 should return 5 Bet
Cards Sequence 7, 8, 9 should return 0 Hold
Cards Sequence 10, J, Q, K, A should return -5 Hold
Cards Sequence 3, 7, Q, 8, A should return -1 Hold
Cards Sequence 2, J, 9, 2, 7 should return 1 Bet
Cards Sequence 2, 2, 10 should return 1 Bet
Cards Sequence 3, 2, A, 10, K should return -1 Hold

 

What I have tried:
 

Hide   Expand arrow-down-16.png   Copy Code
var count = 0;

function cc(card) {
  // Only change code below this line
  switch(card){
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    count += 1;
    break; 
    case 7:
    case 8:
    case 9:
    count += 0;
    break;
    case 10:
    case "J":
    case "Q":
    case "K":
    case "A":
    count -= 1;
    break;
  }
  
  return count + (count == 0 ? "5 Bet": "Hold");

 

please can anyone help with the solution.

Link to comment
Share on other sites

For this, I would define an associative array with the card number/letters as Keys, and the change to the count as Values.

Then I'd just iterate through the card input, pulling out the values of the aforementioned associative array, and compare the final value, and bet or hold accordingly.

Link to comment
Share on other sites

Associative array would be a good solution, but here is an alternative with a simple function:

	<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width-device-width,initial-scale=1.0, user-scalable=yes"/>
<title> HTML5 Test Page </title>
<!-- From: http://w3schools.invisionzone.com/topic/58931-javascriptswitch/ -->
</head>
<body>
<pre>Expected:
Cards Sequence 2, 3, 4, 5, 6 should return 5 Bet
Cards Sequence 7, 8, 9 should return 0 Hold
Cards Sequence 10, J, Q, K, A should return -5 Hold
Cards Sequence 3, 7, Q, 8, A should return -1 Hold
Cards Sequence 2, J, 9, 2, 7 should return 1 Bet
Cards Sequence 2, 2, 10 should return 1 Bet
Cards Sequence 3, 2, A, 10, K should return -1 Hold
</pre>
<pre id="demo"></pre>
	<script>
 const doc = (IDS) => document.getElementById(IDS);
 const msg = (IDS, ...message) => doc(IDS).innerHTML += message.join(' ')+'\n';
	 function countCards(c) {
   const cards = ['2','3','4','5','6','7','8','9','10','J','Q','K','A'];
   const arr = c.split(',');
   var count = 0, pos, a;
   while (arr.length > 0) {
     a = arr.shift();
     pos = cards.indexOf(''+a);
     if (pos < 5) { count++; }
     if (pos > 7) { count--; }
   }
   if (count > 0) { return count+' Bet'; } else { return count+' Hold'; }
 }
 msg('demo',countCards('2,3,4,5,6'));
 msg('demo',countCards('7,8,9'));
 msg('demo',countCards('10,J,Q,K,A'));
 msg('demo',countCards('3,7,Q,8,A'));
 msg('demo',countCards('2,J,9,2,7'));
 msg('demo',countCards('2,2,10'));
 msg('demo',countCards('3,2,A,10,K'));
</script>
</body>
</html>

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...