【CodeWars】1/24 ~ 1/30に解いた問題たち
記事の内容
1/24 ~ 1/30にCodeWarsで解いた問題です。
JavaScriptを使用しています。
朝解いているので、すぐ解ける簡単な問題ばかりです。
get character from ASCII Value
問題の概要 受け取った数字をASCIIでの値に変換する。
コード
function getChar(c) { return String.fromCharCode(c) }
Can we divide it?
問題の概要 変数numberが変数a, bでそれぞれ割り切れるかどうか。
コード
function isDivideBy(number, a, b) { return number % a === 0 && number % b === 0 ? true : false; }
今回はa, b2つと決まっていたが、何個あるかわからない場合はevery()とかを使う感じかな。
Limit string length - 1
問題の概要 文字列の指定された位置から「…」に置き換える。
コード
function solution(string,limit){ if (string.length <= limit) { return string; } let result = string.substr(0, limit); return result + "..."; }
Love vs friendship
問題の概要
コード
1回目
function wordsToMarks(string){ const alphabets = { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10, k: 11, l: 12, m: 13, n: 14, o: 15, p: 16, q: 17, r: 18, s: 19, t: 20, u: 21, v: 22, w: 23, x: 24, y: 25, z: 26 } const charArray = string.split(''); let stringValue = 0; charArray.forEach(char => { stringValue += alphabets[char]; }) return stringValue; }
特に何も考えずに実装。 ひどいことになった。 わかりやすいかもしれないけど…。
2回目
function wordsToMarks(string) { let stringValue = 0; for (let i = 0; i < string.length; i++) stringValue += string.charCodeAt(i) - 96; return stringValue; }
他の人がString.prototype.charCodeAt()を使っていたので、真似てみた。
周りが文字コードを知っているならこれを使ってもいいかもしれない。
Incorrect division method
問題の概要 割り算の答えが返ってくるようにコードを修正する。(コメントアウトの部分)
コード
// const solve = (x, y) => x // y; const solve = function(x, y) { return x / y; }
問題が簡単だったので、下に関数式を書いてみた。
[Code Golf] Return Odd No Matter What
問題の概要 12文字以下で処理を書く。(関数の名前は除く)
コード
const alwaysOdd=n=>n%2?n:n-1
Averages of numbers
問題の概要
配列の隣り合う要素の平均を配列で返す。
コード
const averages = numbers => { let result = []; if (numbers === null) { return result; } for (let i = 0; i < numbers.length; i++) { if (i !== numbers.length -1) { result.push((numbers[i] + numbers[i + 1]) / 2); } } return result; }
空の配列のlengthプロパティにアクセスしようとすると、エラーが返ってくるのはあまり納得が行かない。
0が返ってきたらいいのに。