N 行 M 列のデータの入力

標準入力メニュー【(N行M 列の整数の入力・行ごとに要素数の異なる整数列の入力 ほか】

【STEP: 1】コード (1)

reader.on('close', () => {
   const A = new Array(3);  // 出力値を保存する配列(要素数 3)
   for (let i = 0; i < 3; i++) {  // 3 行の入力値を(' ')区切りの数値の配列に変換して A[i] に保存
      A[i] = lines[i].split(' ').map(e => parseInt(e));
   }
   A.forEach(a => {  // A の各値を  で受け取って…
      console.log(...a);  // スプレット構文で展開して出力
   });
});
hogeちゃんの画像

分割したデータを配列として保存してから 出力時に展開しています。3行なのでループは 3回です。

【STEP: 1】コード(2)

reader.on('close', () => {
   for (let i = 0; i < 3; i++) {
   const a = lines[i].split(' ').map(e => parseInt(e));
      console.log(...a);
   }
});
hogeちゃんの画像

こちらは配列を作らずに ループを回しながら出力しました。

【STEP: 2】コード(1)

reader.on('close', () => {
   const N = parseInt(lines[0]);
   const a = new Array(N);
   for (let i = 1; i <= N; i++) {
      a[i] = lines[i].split(' ').map(e => parseInt(e));
   }
   a.forEach(a => {
      console.log(...a);
   });   
});
hogeちゃんの画像

要素数N 個 の配列に格納してから forEach() で出力。配列の要素数が N 個になりましたが【STEP: 1】コード(1)と同じ動作です。

【STEP: 2】コード(2)

reader.on('close', () => {
   const N = parseInt(lines[0]);
   for (let i = 1; i <= N ; i++) {
      const a = lines[i].split(' ').map(e => parseInt(e));
   console.log(...a);
   }
});
hogeちゃんの画像

ループさせながら配列をスプレット構文で展開して出力しています。3行が N 行になりましたが【STEP: 1】コード(2)と同じ動作です。

【STEP: 3】コード (1)

reader.on('close', () => {
   const A = new Array(3);
   for (let i = 1; i <= 3; i++) {
      A[i] = lines[i].split(' ').map(e => parseInt(e));
   }
   A.forEach(a => {
      console.log(...a);
   });
});
hogeちゃんの画像

行数がわかっていれば 各行のデータを出力可能なので 行数 M は受け取らずに出力しています。(^^;)

【STEP: 3】コード (2)

reader.on('close', () => { 
   for (let i = 1; i <= 3 ; i++) {
      const a = lines[i].split(' ').map(e => parseInt(e));
      console.log(...a);
   }
});
hogeちゃんの画像

3 行なのでループは 3回です。

【STEP: 4】コード (1)

reader.on('close', () => {
const [N,M] = lines[0].split(' ').map(e => parseInt(e));
   const a = new Array(N);
   for (let i = 1; i <= N; i++) {
      a[i] = lines[i].split(' ').map(e => parseInt(e));
   }
   a.forEach(a => {
      console.log(...a);
   });
});
hogeちゃんの画像
lines[0]から取得した N,M のうち 行数の N で 1〜N までループしています。

【STEP: 4】コード (2)

reader.on('close', () => {
   const [N,M] = lines[0].split(' ').map(e => parseInt(e));
   for (let i = 1; i <= N ; i++) {
      const a = lines[i].split(' ').map(e => parseInt(e));
      console.log(...a);
   }   
});
hogeちゃんの画像
こちらのコードでも 行数 M は使いませんでした。(^。^;)

【FINAL】コード (1)

reader.on('close', () => {
   const N = parseInt(lines[0]);
   const A = new Array(N);
   for (let i = 1; i <= N; i++) {
      A[i] = lines[i].split(' ').map(e => parseInt(e));
   }
   A.forEach(a => {
      a.shift();
      console.log(...a);
   });
});
hogeちゃんの画像

for文は 【STEP: 4】と同じです。A の各要素の先頭の値は要素数を現しているので出力する前に削除してから展開。

【FINAL】コード (2)

reader.on('close', () => {
   const N = parseInt(lines[0]);
   for (let i = 1; i <= N ; i++) {
      const a = lines[i].split(' ').map(e => parseInt(e));
      a.shift();
      console.log(...a);
  }
});
hogeちゃんの画像

取得した各配列の先頭の値を削除してから展開して出力。

コメント