6.6 KiB
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 line
e 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
switch
atinge ocase 2
, desce e adiciona 1 àcount
variáveis. - A instrução
switch
, em seguida, atinge abreak
ecc(3);
corre. - Este ciclo continua até que a chamada final seja feita,
cc('A');
. - Após o
switch
declaração, oif
instruçã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 () .