文字列処理メニュー(26〜30)

文字列処理メニュー【数式の計算・巨大な数の足し算・巨大な数のかけ算】

【数式の計算( 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);
});
hogeちゃんの画像

S の 値は数字と″+″または″-″が交互になっているので for文の i の値を 2 ずつ増加させてS[i - 1] が″+″なら ansS[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));
});
hogeちゃんの画像

入力値を″+″で区切った配列を生成して 更に″-″で区切り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);
});
hogeちゃんの画像

文字列の Index が一致する値を数値化して足し合わせた結果を ans (空文字)に連結。(数値 + 数値 = 数値),(文字列 + 数値 = 文字列)

 

【巨大な数の足し算】コード

reader.on('close', () => {
   const S = BigInt(lines[0]);
   const T = BigInt(lines[1]);
   console.log(String(S + T));
});
hogeちゃんの画像
BigInt()の足し算を文字列に変換しました。

【巨大な数のかけ算 】コード

reader.on('close', () => {
   const S = BigInt(lines[0]);
   const T = BigInt(lines[1]);
   console.log(String(S * T));
});
hogeちゃんの画像

BigInt()の掛け算を文字列に変換しました。

コメント