標準出力メニュー【N個の文字を半分ずつ出力・数値を異なる長さで2行出力・直角三角形の出力・2次元配列の出力】
【STEP: 1】コード
reader.on('close', () => {
const N = Number(lines[0]); // 1〜N の数値
const L = N / 2; // 1 行の要素数
const A = [ [], [] ]; // 2 次元配列
for (let i = 1; i <= L; i++) {
A[0].push(i); // A[0] に i を保存
A[1].push(i + L); // A[1] に i + L を保存
}
A.forEach(a => {
console.log(a.join(' ')); // A の各要素(配列)の値を連結して 出力
});
});
N / 2 で 1 行毎の要素数を求めています。for文 で A[0] と A[1] に同時進行で値を保存して join(' ')
で連結した 値を 出力しています。
【STEP: 2】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const A = [ [], [] ];
for (let i = 1; i <= N; i++) {
A[0].push(i); // A[0] に 1〜N を保存
}
for (let i = 1; i <= M; i++) {
A[1].push(i); // A[1] に 1〜M を保存
}
A.forEach(a => {
console.log(a.join(' '));
});
});
A[0] に1〜N ・A[1] に 1〜M をそれぞれ保存し forEach()
で それぞれの要素を連結した値を出力しました。
【STEP: 3】コード
reader.on('close', () => {
const N = Number(lines[0]);
const A = [];
for (let i = 1; i <= N; i++) { // 1 ≦ i ≦ N
A.push([1]); // A に N 個の ([1]) を保存
for (let j = 2; j <= i; j++) { // 2 ≦ j ≦ i
A[i -1].push(j); // A[i -1] に 2 〜 i を追加
}
}
A.forEach(a => {
console.log(a.join(' '));
});
});
2重ループ の カウンタ変数 i のループで [1] を N 個 A に保存してからカウンタ変数 j のループで A[i -1]の要素に 2 〜 i を追加しています。
【STEP: 4】コード
reader.on('close', () => {
const N = Number(lines[0]);
const M = lines[1].split(' ').map(Number); // 要素数 N 個の 配列 M
const A = []; // 出力値を保存する配列
for (let i = 1; i <= N; i++) {
A.push([1]); // A に N 個の ([1]) を保存
for (let j = 2; j <= M[i - 1]; j++) {
A[i - 1].push(j); // A[i - 1] に 2 〜 M[i - 1] を追加
}
}
A.forEach(a => {
console.log(a.join(' '));
});
});
A[i] の要素は 1 〜 M[i – 1] なので カウンタ変数 j の条件式は j<=M[i – 1] になっています。
【FINAL】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const A = lines[1].split(' ').map(Number); // 要素数 N 個の 配列 A
const B = lines[2].split(' ').map(Number); // 要素数 M 個の 配列 B
const C = []; // 出力値を保存する配列
for (let i = 0; i < M; i++) {
const c = A.splice(0, B[i]); // A の値を先頭から B[i] 個切り取り取り c に代入
C.push(c); // 配列 C に 配列 c を追加
}
C.forEach(c => {
console.log(c.join(' '));
});
});
配列 A から B[i] 個 要素を切り取った配列を c に保存して c を C に 追加しています。
コメント