0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

九九表を罫線入りで出力 を Array.from()と.repeat() でスマートに!

Posted at

Paizaの九九表を作る問題で、最初はただのforループでしっかり書いてたんだけど…気づいたらコードがだいぶ長くなってて「うーん…」ってなった…。そこで登場したのがArray.from()!これを使うと一気にコードがスッキリした!メモを記録するよ。


問題: 九九表を整列して出力せよ!

📌 入力なし
📌 出力例:

 1 |  2 |  3 |  4 |  5 |  6 |  7 |  8 |  9
==========================================
 2 |  4 |  6 |  8 | 10 | 12 | 14 | 16 | 18
==========================================
 ...(省略)...
==========================================
 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81
  • 横の数値間では | (半角スペース 2 つとバーティカルライン)、縦の数値間では = で区切って出力
  • ただし、数値を出力する際は 2 けたになるよう半角スペース埋めで出力
  • また、縦の数値間で = を出力する際は、その上の行と文字数が等しくなるように出力


最初のコード:

for (let i = 1; i <= 9; i++) {
    for (let j = 1; j <= 9; j++) {
        if (j === 9) {
            process.stdout.write(String(i * j).padStart(2, ' ') + "\n");
        } else {
            process.stdout.write(String(i * j).padStart(2, ' ') + " | ");
        }
    }
    if (i !== 9) {
        console.log("==========================================");
    }
}


解決法:Array.from()を使う

for (let i = 1; i <= 9; i++) {
    console.log(Array.from({ length: 9 }, (_, j) => String(i * (j + 1)).padStart(2, ' ')).join(" | ")
    );
    if (i !== 9) console.log("=".repeat(2 * 9 + 3 * 8));
}

💡 改善ポイント

Array.from() でループを削減!

  • Array.from({ length: 9 }, (_, j) => ...) で九九の各行を配列に変換
  • (_, j) => i * (j + 1) で九九の結果を生成
  • .join(" | ") で簡単に整列


✅ 区切り線の計算もスマートに!

  • 2 * 9 = 18 (各数字を2桁分確保)
  • 3 * 8 = 24 (区切り|は8個)
  • 18 + 24 = 42 文字の = を出力


📌基本構文

str.repeat(count);
  • str: 繰り返したい文字列。
  • count: 繰り返す回数。count0 以下の場合、空文字列を返します。


✅ 可読性アップ!

  • console.log() だけで一気に出力できてスッキリ


まとめ

少しでもシンプルに、見やすく、効率的なコードを書くためには、このような小さな工夫が大事!以下のポイントを覚えておこう!

  • Array.from() で配列を簡単に生成
  • padStart() で数字を2桁に整列
  • repeat() で区切り線を簡単に作成

これらを使いこなせれば、コードがスムーズに書けるし、可読性もUP!


僕の失敗談と解決話!

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?