標準入力メニュー【(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 の各値を a で受け取って…
console.log(...a); // スプレット構文で展開して出力
});
});
分割したデータを配列として保存してから 出力時に展開しています。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);
}
});
こちらは配列を作らずに ループを回しながら出力しました。
【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);
});
});
要素数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);
}
});
ループさせながら配列をスプレット構文で展開して出力しています。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);
});
});
行数がわかっていれば 各行のデータを出力可能なので 行数 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);
}
});
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);
});
});
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);
}
});
こちらのコードでも 行数 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);
});
});
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);
}
});
取得した各配列の先頭の値を削除してから展開して出力。
コメント