freeCodeCamp/guide/portuguese/certifications/javascript-algorithms-and-d.../basic-javascript/counting-cards/index.md

6.6 KiB

title localeTitle
Counting Cards Contando Cartões

:triangular_flag_on_post: Lembre-se de usar Read-Search-Ask se você ficar preso. Tente emparelhar o programa :busts_in_silhouette: e escreva seu próprio código :pencil:

:checkered_flag: 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

:speech_balloon: Sugestão: 1

Use uma instrução switch (ou else if ) para contar o valor de cada cartão.

tente resolver o problema agora

:speech_balloon: 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

:speech_balloon: 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!

sinal de aviso

Solução à frente!

:beginner: 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 o case 2 , desce e adiciona 1 à count variáveis.
  • A instrução switch , em seguida, atinge a break e cc(3); corre.
  • Este ciclo continua até que a chamada final seja feita, cc('A'); .
  • Após o switch declaração, o if instrução verifica count , 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 () .

Recursos