6.6 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Counting Cards | Contando Cartões |
Lembre-se de usar Read-Search-Ask se você ficar preso. Tente emparelhar o programa
e escreva seu próprio código 
Explicação do Problema:
No jogo de cassino Blackjack , um jogador pode ganhar uma vantagem sobre a casa, mantendo o controle do número relativo de cartas altas e baixas remanescentes no baralho. Isso é chamado de contagem de cartas.
Ter mais cartas altas restantes no baralho favorece o jogador. Cada cartão recebe um valor de acordo com a tabela abaixo. Quando a contagem é positiva, o jogador deve apostar alto. Quando a contagem é zero ou negativa, o jogador deve apostar baixo.
Valor | Postais
----- | : -------------------:
+1 | 2, 3, 4, 5, 6
0 | 7, 8, 9
-1 | 10, 'J', 'Q', 'K', 'A'
Você vai escrever uma função de contagem de cartões. Ele receberá um parâmetro de cartão e incrementará ou decrementará a variável de contagem global de acordo com o valor do cartão (consulte a tabela). A função retornará uma string com a contagem atual e a string Bet se a contagem for positiva ou Hold se a contagem for zero ou negativa. A contagem atual e a decisão do jogador ( Bet ou Hold ) devem ser separadas por um único espaço.
- Altere o código abaixo
// Only change code below this linee até// Only change code above this line - Certifique-se de que você está editando o interior da função
cc. - Use o que você aprendeu para verificar o valor de cada parâmetro de cartão passado para a função.
- Mantenha uma contagem desse número.
- Se a contagem final for 1 ou maior, retorne # Hold .
- Se a contagem final for 0 ou menos, retorne # Aposta .
Exemplo de Saída:
- -3 espera
- 5 Aposta
Sugestão: 1
Use uma instrução switch (ou else if ) para contar o valor de cada cartão.
tente resolver o problema agora
Dica: 2
Adicionar / subtrair o valor de cada cartão para contagem de variáveis. Se a carta valer 0, não faça nada.
tente resolver o problema agora
Dica: 3
Depois de contar os cards, use uma instrução if para verificar o valor da contagem . Além disso, certifique-se de que seu return tenha um espaço entre o número e a string.
tente resolver o problema agora
Alerta de Spoiler!
Solução à frente!
Solução básica de código:
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
}
Explicação do código:
- Verifique o valor de cada cartão por meio de uma instrução
switch. - A contagem variável:
- Aumenta em 1 se o cartão for 2, 3, 4, 5 ou 6.
- Já que 7, 8 e 9 não valem nada, nós os ignoramos em nossa instrução
switch. - Diminui em 1 se o cartão for um 10, 'J', 'Q', 'K' ou 'A'.
- Verifique o valor da contagem e retorne a resposta apropriada.
Exemplo de Execução
cc(2);corre.- A instrução
switchatinge ocase 2, desce e adiciona 1 àcountvariáveis. - A instrução
switch, em seguida, atinge abreakecc(3);corre. - Este ciclo continua até que a chamada final seja feita,
cc('A');. - Após o
switchdeclaração, oifinstrução verificacount, que é agora a 0. - Isso então cai para a instrução
else, que retornará 0 Hold .
Nota : Como mencionado anteriormente, a instrução switch também poderia ter sido uma instrução else if .
Solução de código adicional:
function cc(card) {
// Only change code below this line
var regex = /[JQKA]/;
if (card > 1 && card < 7){count++;}
else if (card === 10 || String(card).match(regex)){count--;}
if (count > 0) return count + " Bet";
return count + " Hold";
// Only change code above this line
}
· Executar código no repl.it.
Explicação de código
· A função primeiro avalia if a card condição é um valor maior que 1 e menor que 7 , em cujo caso a count é incrementada em um. · Então, se a carta é 10 ou superior, diminui a count por um. · A variável regex é uma expressão regular que representa valores (letras) para as cartas mais altas. · A instrução else verifica esses valores com o || (logical OR) operador || (logical OR) ; primeiro para 10 e depois para qualquer string que corresponda à expressão regular usando String.match () .
