Files
2022-12-22 09:23:26 -08:00

5.3 KiB
Raw Blame History

id, title, challengeType, videoUrl, forumTopicId, dashedName
id title challengeType videoUrl forumTopicId dashedName
565bbe00e9cc8ac0725390f4 Підрахунок карт 1 https://scrimba.com/c/c6KE7ty 16809 counting-cards

--description--

В азартній грі «Блекджек» гравець може визначити, чи він має перевагу в наступній роздачі, відстежуючи кількість старших та молодших карт, що залишились в колоді. Це називається підрахунком карт.

Чим більше старших карт у колоді, тим краще для гравця. Кожній карті присвоєне значення відповідно до нижчеподаної таблиці. Якщо підрахунок більший за нуль, гравець повинен ставити старшу карту. Якщо підрахунок дорівнює нулю або менший за нуль, гравець повинен ставити молодшу карту.

Зміна рахункуКарти
+12, 3, 4, 5, 6
07, 8, 9
-110, 'J', 'Q', 'К', 'A'

Ви писатимете функцію підрахунку карт. Вона отримає параметр card, який може бути числом або рядком, а також збільшуватиме або зменшуватиме глобальну змінну count, відповідно до значення карти (див. таблицю). Тоді функція поверне рядок з поточним підрахунком і рядок Bet, якщо підрахунок більше нуля, або Hold, якщо підрахунок дорівнює або менше нуля. Між поточним підрахунком та рішенням гравця (Bet або Hold) повинен бути один пробіл.

Приклад виводів: -3 Hold або 5 Bet

Підказка
НЕ скидайте count до 0, якщо значення становить 7, 8 або 9. НЕ повертайте масив.
НЕ використовуйте лапки (одинарні чи подвійні) у виводі.

--hints--

Ваша функція повинна повертати значення для підрахунку та текст (Bet або Hold) з одним пробілом між ними.

assert(//
  (function () {
    count = 0;
    let out = cc(10);
    const hasSpace = /-?\d+ (Bet|Hold)/.test('' + out);
    return hasSpace;
  })()
);

Послідовність карт 2, 3, 4, 5, 6 повинна повертати рядок 5 Bet

assert(
  (function () {
    count = 0;
    cc(2);
    cc(3);
    cc(4);
    cc(5);
    var out = cc(6);
    if (out === '5 Bet') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 7, 8, 9 повинна повертати рядок 0 Hold

assert(
  (function () {
    count = 0;
    cc(7);
    cc(8);
    var out = cc(9);
    if (out === '0 Hold') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 10, J, Q, K, A повинна повертати рядок -5 Hold

assert(
  (function () {
    count = 0;
    cc(10);
    cc('J');
    cc('Q');
    cc('K');
    var out = cc('A');
    if (out === '-5 Hold') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 3, 7, Q, 8, A повинна повертати рядок -1 Hold

assert(
  (function () {
    count = 0;
    cc(3);
    cc(7);
    cc('Q');
    cc(8);
    var out = cc('A');
    if (out === '-1 Hold') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 2, J, 9, 2, 7 повинна повертати рядок 1 Bet

assert(
  (function () {
    count = 0;
    cc(2);
    cc('J');
    cc(9);
    cc(2);
    var out = cc(7);
    if (out === '1 Bet') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 2, 2, 10 повинна повертати рядок 1 Bet

assert(
  (function () {
    count = 0;
    cc(2);
    cc(2);
    var out = cc(10);
    if (out === '1 Bet') {
      return true;
    }
    return false;
  })()
);

Послідовність карт 3, 2, A, 10, K повинна повертати рядок -1 Hold

assert(
  (function () {
    count = 0;
    cc(3);
    cc(2);
    cc('A');
    cc(10);
    var out = cc('K');
    if (out === '-1 Hold') {
      return true;
    }
    return false;
  })()
);

--seed--

--seed-contents--

let count = 0;

function cc(card) {
  // Only change code below this line


  return "Change Me";
  // Only change code above this line
}

cc(2); cc(3); cc(7); cc('K'); cc('A');

--solutions--

let count = 0;
function cc(card) {
  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--;
  }
  if(count > 0) {
    return count + " Bet";
  } else {
    return count + " Hold";
  }
}