n * n の 2 次元配列の表示

標準出力メニュー【2 * 2 の出力・3 * 3 の出力・九九表の出力・N * N の九九表の出力】

【STEP: 1】コード

const N = [[0, 8],[1, 3]];  // 配列の中に配列で2次元配列
for (let i = 0; i < 2; i++) {
   console.log(N[i].join(' '));
}
hogeちゃんの画像

とりあえず 2次元配列。こんな感じでOK?

【STEP: 2】コード

reader.on('close', () => {
   const N = lines[0].split(' ').map(Number);  // 入力値を数値の配列に変換
   const N2 = []; // (N.splice(0, 3))を保存する配列
   let i = N.length;
   while (i > 0) {
      const n = N.splice(0, 3);  // 配列 N の要素を3つずつ切り取って…
     N2.push(n);  // N2 に追加
     i = N.length;  // 要素を3個切り取った後の N の要素数 で i を上書き
   }
 N2.forEach(n =>{  // N2 の各要素を n で受け取り…
      console.log(n.join(' '));  // (' ')区切りで連結して表示
   });
});
hogeちゃんの画像
配列 N の要素を3つずつ切り取った配列を N2 に追加して 2次元配列 を生成しています。

【STEP: 3】コード

const A = [];  // 九九表(2次元配列)
for (let i = 0; i < 9; i++) {
  A.push([i +1]);  // 九九表の格段の 1 列目([1]〜[9])
   for (let j = 0; j < 8; j++) {
     A[i].push(A[i][0] + A[i][j]);  // 九九表の格段の 2〜9 列目
   }
}
A.forEach(a => {  // A の各要素を a で受け取り…
   console.log(a.join(' '));  // (' ')区切りで連結して表示
});
hogeちゃんの画像
2重ループ で A[i +1]push() しながら A[i] に A[i][0]+A[i][j] を push() して 2次元配列の九九表を生成。出力時に A の各要素を join(' ') で連結しています。

【FINAL】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = [];
   for (let i = 0; i < N; i++) {
      A.push([i + 1]);
      for (let j = 0; j < N - 1; j++) {
         A[i].push(A[i][0] + A[i][j]);
      }
   }
   A.forEach(a => {  // A の各要素を a で受け取り…
      console.log(a.join(' '));  // (' ')区切りで連結して表示
   });
});
hogeちゃんの画像

【STEP: 3】のコードを汎用化。ループの条件を i < 9 から i < N へ。

コメント