9.0 KiB
title | localeTitle |
---|---|
Counting Cards | Счетные карточки |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
В игре Blackjack в казино игрок может получить преимущество над домом, отслеживая относительное количество высоких и низких карт, оставшихся в колоде. Это называется подсчет карт.
Наличие более высоких карт, оставшихся в колоде, способствует игроку. Каждой карте присваивается значение в соответствии с приведенной ниже таблицей. Когда счет положителен, игрок должен делать ставки на высокий уровень. Когда счетчик равен нулю или отрицателен, игрок должен делать ставки на низком уровне.
Значение | Карты
----- | : -------------------:
+1 | 2, 3, 4, 5, 6
0 | 7, 8, 9
-1 | 10, 'J', 'Q', 'K', 'A'
Вы будете писать функцию подсчета карт. Он получит параметр карты и увеличит или уменьшит глобальную переменную счета в соответствии со значением карты (см. Таблицу). Затем функция вернет строку с текущим счетчиком и строкой Bet
если счетчик положителен, или Hold
если счетчик равен нулю или отрицателен. Текущий счетчик и решение игрока ( Bet
или Hold
) должны быть разделены одним пробелом.
- Изменить код ниже
// Only change code below this line
и до// Only change code above this line
- Убедитесь, что вы редактируете внутреннюю часть функции
cc
. - Используйте то, что вы изучили, чтобы проверить значение каждого параметра карты, переданного в функцию.
- Сохраните подсчет этого числа.
- Если конечный счет равен 1 или больше, верните # Удержание .
- Если итоговый счет равен 0 или меньше, верните # ставка .
Пример:
- -3 Удержание
- 5 ставок
Подсказка: 1
Используйте оператор switch
(или else if
), чтобы подсчитать значение каждой карты.
попытаться решить проблему сейчас
Подсказка: 2
Добавьте / вычтите значение каждой карты для подсчета переменных. Если карта стоит 0, ничего не делайте.
попытаться решить проблему сейчас
Подсказка: 3
После того, как вы подсчитали карты, используйте инструкцию if
чтобы проверить значение count . Кроме того, убедитесь, что у вашего return
есть пробел между номером и строкой.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
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
}
Код Объяснение:
- Проверьте значение каждой карточки с помощью оператора
switch
. - Счетчик переменных:
- Увеличивает на 1, если карта равна 2, 3, 4, 5 или 6.
- Поскольку 7, 8 и 9 ничего не стоят, мы игнорируем эти карты в инструкции
switch
. - Уменьшает на 1, если карта равна 10, 'J', 'Q', 'K' или 'A'.
- Проверьте значение счетчика и верните соответствующий ответ.
Пример Run
cc(2);
пробеги.- Оператор
switch
обращается кcase 2
, спрыгивает вниз и добавляет 1 кcount
переменных. - Затем оператор
switch
попадает вbreak
иcc(3);
пробеги. - Этот цикл продолжается до окончательного вызова,
cc('A');
, - После оператора
switch
операторif
проверяетcount
, который теперь равен 0. - Затем он опускается до инструкции
else
, которая вернет 0 Hold .
Примечание . Как упоминалось ранее, оператор switch
мог также быть инструкцией else if
.
Дополнительное решение для кода:
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
}
· Запустить код в repl.it.
Обозначение кода
· Функция сначала оценивает, является if
card
условия значением больше 1
и ниже 7
, и в этом случае она увеличивает count
на единицу. · Если карта равна 10
или выше, она уменьшает count
на единицу. · Переменное regex
является регулярным выражением , представляющее значение (буквы) для высших карт. · Оператор else
проверяет эти значения с помощью || (logical OR)
оператор; сначала для 10
а затем для любой строки, которая соответствует регулярному выражению с помощью String.match () .