【CodeWars】1/3 ~ 1/9に解いた問題たち
記事の内容
1/3 ~ 1/9にCodeWarsで解いた問題です。
JavaScriptを使用しています。
朝解いているので、すぐ解ける簡単な問題ばかりです。
1/3 USD => CNY
問題の概要 ドルから人民元に変換する。 www.codewars.com
コード
function usdcny(usd) { let cny = usd * 6.75 cny = cny.toFixed(2) return `${cny} Chinese Yuan` }
JavaScript第一段。
1/4 Sum The Strings
問題の概要 2つのString型の数字の和をString型で返却する。
コード
function sumStr(a,b) { return String(Number(a)+Number(b)); }
1/5 Check the exam
問題の概要 2つの配列の要素の一致・不一致でスコアを算出する。
コード
function checkExam(answer, submit) { let score = 0; for (let i = 0; i < submit.length; i++) { if (submit[i]) { score += submit[i] === answer[i] ? 4 : -1; } } return score < 0 ? 0: score; }
Best Practiceに選ばれた解答はarray.reduce()を使ってた。
1/6 Unique numbers
問題の概要 配列の重複を削除した新しい配列を返却する。 www.codewars.com
コード
function uniqueNumbers(numbersArray) { let uniqueArray = numbersArray.filter(function (x, i, self) { return self.indexOf(x) === i; }); return uniqueArray; }
JavaScriptにはPHPのarray_unique()みたいなものは無かった…。
1/7 NBA full 48 minutes average
問題の概要 外挿を求めて返却する。
コード
function pointsPer48(ppg, mpg) { if (ppg === 0 || mpg === 0) { return 0;} let ans = ppg / mpg * 48; return Number(ans.toFixed(1)); }
恥ずかしながら、外挿って言葉を初めて知った。 既知のデータから範囲外の予測をすることらしい。
1/8 Multiplication table for number
問題の概要 1 ~ 10 * 与えられた数を改行して出力する。
コード
function multiTable(number) { let result = ''; for (let count = 1; count <= 10; count++) { if (count === 10) { result += `${count} * ${number} = ${count * number}`; } else { result += `${count} * ${number} = ${count * number}\n`; } } return result; }
ifじゃなくて、参考演算子で書けばよかったかも。
1/9 CSV representation of array
問題の概要 配列を結合する。
コード
1回目
function toCsvText(array) { let csv = ''; for (const innerArray of array) { csv += innerArray.join(); if (innerArray !== array.slice(-1)[0]) { csv += '\n'; } } return csv; }
2回目
function toCsvText(array) { return array.join('\n'); }
難しく考えすぎてた。 ただ、JavaScriptでの配列の結合の仕方や配列の最後の要素の取得など学べたのでよかった。
毎日簡単な問題を解くのもいいけど、2~3日かけて難しめの問題を解くのもアリな気がする。