6.6 KiB
title, localeTitle
| 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 liney 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
switchgolpea elcase 2, salta hacia abajo y agrega 1 a lacountvariable. - La instrucción
switchbreakycc(3);carreras. - Este ciclo continúa hasta que se realiza la llamada final,
cc('A');. - Después de la instrucción
switch, la instrucciónifcuentacount, 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 () .
