JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】指定したサイズの菱形を出力する関数の作り方

JavaScriptでは、for文process.stdout.write()を組み合わせることで、指定したサイズに応じた菱形(ダイヤモンド形)をコンソールに出力する独自の関数を簡単に作成できます。ここではNode.js環境での実装例を紹介します。

サンプルコード

function createDiamondShape(size){
    for(var i=1;i<=size;i++){
        for(var s=size-1;s>=i;s--){
            process.stdout.write(" ");
        }
        for(var j=1;j<=i;j++){
            process.stdout.write("* ")
        }
        console.log();
    }
    if(i==size+1){
        for(var i=1;i<=size-1;i++){
            for(var s=1;s<=i;s++){
                process.stdout.write(" ");
            }
            for(j=i;j<=size-1;j++){
                process.stdout.write("* ");
            }
            console.log();
        }
    }
}
createDiamondShape(9);

コードの仕組み

この関数は、大きく分けて2つの処理で構成されています。

  • 上半分(山型の部分):外側のループが行数を制御し、1つ目の内側のループで行頭に空白を追加してインデントを調整します。その後、2つ目の内側のループで「*」を行の左から順に出力していきます。
  • 下半分(逆山型の部分):空白と「*」の出力順序を入れ替えることで、行が進むごとに幅が狭まっていく三角形を描きます。これにより、上下対称の菱形が完成します。

なお、最初のループが終了した時点で変数iにはsize+1の値が残っているため、if(i==size+1)の条件が成立し、下半分の描画処理が実行される仕組みです。

プログラムの実行方法

上記のプログラムはNode.js上で動作するため、ターミナルから以下のコマンドを実行します。

node fileName.js

ここでは、ファイル名を「demo58.js」として保存した場合のコマンド例を示します。

出力結果

実行すると、以下のようにサイズ9の菱形が出力されます。

PS C:\Users\Amit\JavaScript-code> node demo58.js
        *
       * *
      * * *
     * * * *
    * * * * *
   * * * * * *
  * * * * * * *
 * * * * * * * *
* * * * * * * * *
 * * * * * * * *
  * * * * * * *
   * * * * * *
    * * * * *
     * * * *
      * * *
       * *
        *

引数sizeに渡す数値を変更すれば、任意の大きさの菱形を自由に生成できます。ぜひいろいろな値で試してみてください。

  1. JavaScriptのapply()メソッドとは?別オブジェクトで関数を再利用する方法を解説

    JavaScriptのapply()メソッドとは JavaScriptのapply()メソッドを使用すると、あるオブジェクト向けに定義したメソッドを、別のオブジェクトでもそのまま再利用できます。最大の特徴は、関数に渡す引数を配列としてまとめて指定できる点です。これにより、柔軟で使い回しやすい関数設計が可能になります。 apply()の基本構文は以下のとおりです。 func.apply(thisArg, [arg1, arg2, ...]) 第1引数(thisArg):関数内でthisとして参照されるオブジェクトを指定します。 第2引数(argsArray):関数へ渡す引数を配列形式で指定しま

  2. JavaScriptの関数パラメーターとは?使い方をサンプルコードで解説

    JavaScriptでは、関数を呼び出すときにさまざまなパラメーター(引数)を渡すことができます。関数側では、渡されたパラメーターを受け取り、それに対して任意の処理を実行することが可能です。また、1つの関数は複数のパラメーターを受け取ることができ、それぞれのパラメーターはカンマ(,)で区切って指定します。さらに、JavaScriptには arguments オブジェクトが用意されており、仮引数として宣言した変数とは別に、実際に関数へ渡されたすべての引数へアクセスできます。以下のサンプルコードでは、Array.from(arguments) を使って受け取った引数を配列化し、順番に画面へ出力して