6.6 KiB
title | localeTitle |
---|---|
Counting Cards | Tarjetas de conteo |
Recuerda usar Read-Search-Ask
si te atascas. Tratar de emparejar el programa y escribe tu propio código
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
Sugerencia: 1
Use una instrucción de switch
(o else if
) para contar el valor de cada tarjeta.
intenta resolver el problema ahora
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
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!
¡Solución por delante!
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 elcase 2
, salta hacia abajo y agrega 1 a lacount
variable. - La instrucción
switch
break
ycc(3);
carreras. - Este ciclo continúa hasta que se realiza la llamada final,
cc('A');
. - Después de la instrucción
switch
, la instrucciónif
cuentacount
, 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 () .