exit('IN');

本を読んで得た学びとか

【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型で返却する。

www.codewars.com

コード

function sumStr(a,b) {
  return String(Number(a)+Number(b));
}

1/5 Check the exam

問題の概要 2つの配列の要素の一致・不一致でスコアを算出する。

www.codewars.com

コード

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

問題の概要 外挿を求めて返却する。

www.codewars.com

コード

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 * 与えられた数を改行して出力する。

www.codewars.com

コード

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

問題の概要 配列を結合する。

www.codewars.com

コード

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日かけて難しめの問題を解くのもアリな気がする。