Files
2022-01-20 20:30:18 +01:00

4.7 KiB

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'、'K'、'A'

カードカウンティング関数を記述してください。 この関数は数値または文字列の card パラメーターを受け取り、カードの値に応じて (表を参照)、グローバルの count 変数をインクリメントまたはデクリメントします。 次に、この関数は現在のカウントを示す文字列と、文字列 Bet (カウントが正の場合) または文字列 Hold (カウントがゼロか負の場合) を返します。 現在のカウントとプレイヤーの判断 (Bet または Hold) の間にスペースを 1 つ入れてください。

出力例: -3 Hold5 Bet など

ヒント
値が 7、8、9 の場合に count を 0 にリセットしないでください。 配列を返さないでください。
出力に引用符 (シングルクォートまたはダブルクォート) を含めないでください。

--hints--

カードの並びが 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";
  }
}