記事の内容
1/24 ~ 1/30にCodeWarsで解いた問題です。
JavaScriptを使用しています。
朝解いているので、すぐ解ける簡単な問題ばかりです。
get character from ASCII Value
問題の概要
受け取った数字をASCIIでの値に変換する。
www.codewars.com
コード
function getChar(c) {
return String.fromCharCode(c)
}
Can we divide it?
問題の概要
変数numberが変数a, bでそれぞれ割り切れるかどうか。
www.codewars.com
コード
function isDivideBy(number, a, b) {
return number % a === 0 && number % b === 0 ? true : false;
}
今回はa, b2つと決まっていたが、何個あるかわからない場合はevery()とかを使う感じかな。
Limit string length - 1
問題の概要
文字列の指定された位置から「…」に置き換える。
www.codewars.com
コード
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
問題の概要
割り算の答えが返ってくるようにコードを修正する。(コメントアウトの部分)
www.codewars.com
コード
// const solve = (x, y) => x // y;
const solve = function(x, y) {
return x / y;
}
問題が簡単だったので、下に関数式を書いてみた。
[Code Golf] Return Odd No Matter What
問題の概要
12文字以下で処理を書く。(関数の名前は除く)
www.codewars.com
コード
const alwaysOdd=n=>n%2?n:n-1
Averages of numbers
問題の概要
配列の隣り合う要素の平均を配列で返す。
www.codewars.com
コード
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が返ってきたらいいのに。