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

6.6 KiB

title localeTitle
Counting Cards Tarjetas de conteo

:triangular_flag_on_post: Recuerda usar Read-Search-Ask si te atascas. Tratar de emparejar el programa :busts_in_silhouette: y escribe tu propio código :pencil:

:checkered_flag: Explicación del problema:

En el juego de casino Blackjack , un jugador puede obtener una ventaja sobre la casa al hacer un seguimiento del número relativo de cartas altas y bajas que quedan en el mazo. Esto se llama conteo de cartas.

Tener más cartas altas en el mazo favorece al jugador. A cada tarjeta se le asigna un valor de acuerdo con la siguiente tabla. Cuando el conteo es positivo, el jugador debe apostar alto. Cuando el conteo es cero o negativo, el jugador debe apostar bajo.

Valor | Tarjetas
----- | : -------------------:
+1 | 2, 3, 4, 5, 6
0 | 7, 8, 9
-1 | 10, 'J', 'Q', 'K', 'A'

Escribirás una función de conteo de cartas. Recibirá un parámetro de tarjeta e incrementará o disminuirá la variable de conteo global de acuerdo con el valor de la tarjeta (consulte la tabla). La función devolverá una cadena con el recuento actual y la cadena Bet si el recuento es positivo, o Hold si el recuento es cero o negativo. El conteo actual y la decisión del jugador ( Bet o Hold ) deben estar separados por un solo espacio.

  • Cambie el código a continuación // Only change code below this line y hasta // Only change code above this line
  • Asegúrese de que está editando el interior de la función cc .
  • Use lo que ha aprendido para verificar el valor de cada parámetro de tarjeta que se pasó a la función.
  • Mantenga una cuenta corriente de ese número.
  • Si el conteo final es 1 o mayor, devuelve # Mantener .
  • Si el conteo final es 0 o menos, devuelve # Bet .

Ejemplo de salida:

  • -3 espera
  • 5 Apuesta

:speech_balloon: Sugerencia: 1

Use una instrucción de switch (o else if ) para contar el valor de cada tarjeta.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 2

Suma / resta el valor de cada carta a la cuenta variable. Si la tarjeta vale 0, no hagas nada.

intenta resolver el problema ahora

:speech_balloon: Sugerencia: 3

Una vez que haya contado las tarjetas, use una instrucción if para verificar el valor del conteo . Además, asegúrese de que su return tenga un espacio entre el número y la cadena.

intenta resolver el problema ahora

¡Alerta de spoiler!

señal de advertencia

¡Solución por delante!

:beginner: Solución de código básico:

    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 
    } 

Explicación del código:

  • Compruebe el valor de cada tarjeta a través de una declaración de switch .
  • La cuenta variable:
    • Aumenta en 1 si la tarjeta es un 2, 3, 4, 5 o 6.
    • Como 7, 8 y 9 no valen nada, ignoramos esas tarjetas en nuestra declaración de switch .
    • Disminuye en 1 si la tarjeta es un 10, 'J', 'Q', 'K' o 'A'.
  • Verifique el valor de contar y devuelva la respuesta apropiada.

Ejecución de ejemplo

  • cc(2); carreras.
  • La instrucción de switch golpea el case 2 , salta hacia abajo y agrega 1 a la count variable.
  • La instrucción switch break y cc(3); carreras.
  • Este ciclo continúa hasta que se realiza la llamada final, cc('A'); .
  • Después de la instrucción switch , la instrucción if cuenta count , que ahora es 0.
  • Esto luego cae a la instrucción else , que devolverá 0 Hold .

Nota : Como se mencionó anteriormente, la instrucción switch también podría haber sido una instrucción else if .

Solución 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 
 } 

· Ejecutar código en repl.it.

Explicación del código

· La función primero evalúa if la card condición es un valor mayor que 1 y menor que 7 , en cuyo caso la count se incrementa en uno. · Luego, si la tarjeta es 10 o más, se reduce la count en uno. · La variable regex es una expresión regular que representa valores (letras) para las tarjetas más altas. · La sentencia else comprueba esos valores con el || (logical OR) operador || (logical OR) ; primero para 10 y luego para cualquier cadena que coincida con la expresión regular usando String.match () .

Recursos