出力形式を指定して出力

標準出力メニュー 【文字列とN個の整数の出力・九九表を罫線入りで出力・ペアの数値の入った表を罫線入りで出力 ほか】

【STEP: 1】コード

reader.on('close', () => {
   const [S, T] = [lines[0], lines[1]];  // 2行の入力を各々 S, T で受け取り
   console.log(S, '+', T, '=', S + T);  // 文字列 + 文字列 = 文字列の連結
});
hogeちゃんの画像

数字 と 数学記号(文字)を ( ,)  で連結して出力しています。数値の 5+5=10になりますけど、数字の ‘5’ + ‘5’ = ’55’ ですね。

【STEP: 2】コード

reader.on('close', () => {
   const [N, A, B] = lines[0].split(' ');
   const S = [];
   for (let i = 0; i < N; i++) {
      S.push(`(${A}, ${B})`);  // テンプレートリテラル
    }
   console.log(S.join(', '));  // S を(', ') で連結して出力
});
hogeちゃんの画像

配列 S にテンプレートリテラルで生成した文字列を N 個 保存し (″, ″)で連結した値を出力しています。

【STEP: 3】コード

for (let i = 0; i < 9; i++) {
  const S = [];  // 九九表の i + 1 の段を保存する配列
   S.push(i + 1);  // i + 1 の段の一列目
      for (let j = 0; j < 8; j++) {
         S.push(S[0] + S[j]);  // 2列〜9列目
      }
   for (let k = 0; k < 9; k++) {
   // 九九表の i + 1 の段の数値(S の各値)を文字列に変換し 更に' '埋めの2桁にする
      S[k] = String(S[k]).padStart(2, ' ');
   }
   const S_join = S.join(' | ');  // S の要素を' | 'で連結
   console.log(S_join);  // i + 1 の段を出力
   let line = '=';  // 縦の区切り
   for (let l = 1; l < S_join.length; l++) {
      line += '=';  // 縦の区切りを上の行の文字数と合わせる
   }
   if (i < 8) {  // 最後の行の区切り線は不要なので条件分岐
      console.log(line);  // 縦の区切りを表示
   }
}
hogeちゃんの画像

九九表を一段毎に表示形式を変換しながら出力。続けてラインを出力 の繰り返し。一番下のラインは不要なので、条件分岐しています。

【STEP: 4】コード

reader.on('close', () => {
   const [H, W, A, B] = lines[0].split(' ').map(Number);
   const S = [];
   for (let j = 0; j < W; j++) {
  // テンプレートリテラルで(A, B) という形式の文字列を生成し S に追加(W 個)
      S.push(`(${A}, ${B})`); 
   }
   const S_join = S.join(' | ');
   for (let i = 0; i < H; i++) {
      console.log(S_join);
      if (i < H - 1) {
  // '=' を S_join の文字数分 連結して H - 1 回 表示
         console.log('='.repeat(S_join.length));
      }
   }
});
hogeちゃんの画像
各行の値を生成し、S に保存。ループを H 回繰り返し、区切り線を挟みながら出力。'=' の表示は repeat(繰り返す回数) で連結して表示しています。

【FINAL】コード

reader.on('close', () => {
   const [H, W, A, B] = lines[0].split(' ');
   const A_p = A.padStart(9, ' ');  // ' ' 埋めで9桁
   const B_p = B.padStart(9, ' ');
   const S = [];
   for (let j = 0; j < W; j++) {
      S.push(`(${A_p}, ${B_p})`);
   }
   const S_join = S.join(' | ');
   for (let i = 0; i < H; i++) {
      console.log(S_join);
      if (i < H - 1) {
         console.log('='.repeat(S_join.length));  // '=' を S_join の文字数分 連結
      }
   }
});
hogeちゃんの画像

桁揃えが必要なので、padStart() を実行しています。

コメント