freeCodeCamp Javascriptの問題「Counting Cards」の解説ページにあるSolution3を説明して欲しい。
解決したいこと
当該問題解説ページにあるSolution3が正しいコードであることを説明して欲しい。
僕には、Solution3はとてもトリッキーな解法に見えます。
それに、Solution3だけ説明文がないのも解せません。
問題ページ「Counting Cards」
https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/counting-cards
解説ページ「freeCodeCamp Challenge Guide: Counting Cards」
https://forum.freecodecamp.org/t/freecodecamp-challenge-guide-counting-cards/16809
確かに、Solution3のコードは Run the Test に合格します。
ですが、else if の条件式
card >= "10"
つまり「変数cardの値が文字列"10"以上のとき」
が、与えられた条件
「変数cardの値が、数値10または文字列"J"または"Q"または"K"または"A"のとき」
を正しく満たしている理由がわかりません。
該当するソースコード
let count = 0;
function cc(card) {
if (card <= 6)
count++;
else if (card >="10")
count--;
return count + (count > 0 ? ' Bet' : ' Hold');
}
自分で試したこと
ちなみに、僕の回答は以下の2つで、Solution2、Solution3とほぼ同様です。
let count = 0;
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;
}
return count + (count > 0 ? ' Bet' : ' Hold');
// Only change code above this line
}
let count = 0;
function cc(card) {
// Only change code below this line
if (card >= 2 && card <= 6) {
count++;
} else if (card === 10 || /[JQKA]/.test(card)) {
count--;
}
return count + (count > 0 ? ' Bet' : ' Hold');
// Only change code above this line
}