標準出力メニュー 【文字列とN個の整数の出力・九九表を罫線入りで出力・ペアの数値の入った表を罫線入りで出力 ほか】
【STEP: 1】コード
reader.on('close', () => {
const [S, T] = [lines[0], lines[1]]; // 2行の入力を各々 S, T で受け取り
console.log(S, '+', T, '=', S + T); // 文字列 + 文字列 = 文字列の連結
});
数字 と 数学記号(文字)を ( ,) で連結して出力しています。数値の 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 を(', ') で連結して出力
});
配列 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); // 縦の区切りを表示
}
}
九九表を一段毎に表示形式を変換しながら出力。続けてラインを出力 の繰り返し。一番下のラインは不要なので、条件分岐しています。
【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));
}
}
});
各行の値を生成し、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 の文字数分 連結
}
}
});
桁揃えが必要なので、padStart() を実行しています。
コメント