9.0 KiB
title, localeTitle
| 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 () .
