文字列処理メニュー【数式の計算・巨大な数の足し算・巨大な数のかけ算】
【数式の計算( 1 桁)】コード
reader.on('close', () => {
const S = lines[0].split('');
let ans = Number(S[0]);
for (let i = 2; i < S.length; i += 2) {
const n = Number(S[i]);
switch (S[i - 1]) {
case ('+'):
ans += n;
break;
case ('-'):
ans -= n;
break;
}
}
console.log(ans);
});
S の 値は数字と″+″または″-″が交互になっているので for文の i の値を 2 ずつ増加させてS[i - 1]
が″+″なら ans に S[i]
を加算。″-″なら 減算。
【数式の計算】コード
reader.on('close', () => {
const S = lines[0];
const S1 = S.split('+');
for (let i = 0; i < S1.length; i++) {
if (S1[i].includes('-')) {
S1[i] = S1[i].split('-');
let s = S1[i][0];
for (let j = 1; j < S1[i].length; j++) {
s -= S1[i][j];
}
S1[i] = s;
} else {
S1[i] = Number(S1[i]);
}
}
console.log(S1.reduce((a, c) => a + c));
});
入力値を″+″で区切った配列を生成して 更に″-″で区切り2次元配列を生成。深さレベル2の数式を計算した結果で元の値を上書き。reduce((a, c) => a + c)
で配列の全ての値の足し算の結果を表示。
【巨大な数の足し算(繰り上がりなし)】コード
reader.on('close', () => {
const S = lines[0];
const T = lines[1];
let ans = '';
for (let i = 0; i < S.length; i++) {
const [s, t] = [Number(S[i]), Number(T[i])];
ans += s + t;
}
console.log(ans);
});
文字列の Index が一致する値を数値化して足し合わせた結果を ans (空文字)に連結。(数値 + 数値 = 数値),(文字列 + 数値 = 文字列)
【巨大な数の足し算】コード
reader.on('close', () => {
const S = BigInt(lines[0]);
const T = BigInt(lines[1]);
console.log(String(S + T));
});
BigInt()
の足し算を文字列に変換しました。【巨大な数のかけ算 】コード
reader.on('close', () => {
const S = BigInt(lines[0]);
const T = BigInt(lines[1]);
console.log(String(S * T));
});
BigInt()
の掛け算を文字列に変換しました。
コメント