【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に渡す数値を変更すれば、任意の大きさの菱形を自由に生成できます。ぜひいろいろな値で試してみてください。
-
JavaScriptのapply()メソッドとは?別オブジェクトで関数を再利用する方法を解説
JavaScriptのapply()メソッドとは JavaScriptのapply()メソッドを使用すると、あるオブジェクト向けに定義したメソッドを、別のオブジェクトでもそのまま再利用できます。最大の特徴は、関数に渡す引数を配列としてまとめて指定できる点です。これにより、柔軟で使い回しやすい関数設計が可能になります。 apply()の基本構文は以下のとおりです。 func.apply(thisArg, [arg1, arg2, ...]) 第1引数(thisArg):関数内でthisとして参照されるオブジェクトを指定します。 第2引数(argsArray):関数へ渡す引数を配列形式で指定しま
-
JavaScriptの関数パラメーターとは?使い方をサンプルコードで解説
JavaScriptでは、関数を呼び出すときにさまざまなパラメーター(引数)を渡すことができます。関数側では、渡されたパラメーターを受け取り、それに対して任意の処理を実行することが可能です。また、1つの関数は複数のパラメーターを受け取ることができ、それぞれのパラメーターはカンマ(,)で区切って指定します。さらに、JavaScriptには arguments オブジェクトが用意されており、仮引数として宣言した変数とは別に、実際に関数へ渡されたすべての引数へアクセスできます。以下のサンプルコードでは、Array.from(arguments) を使って受け取った引数を配列化し、順番に画面へ出力して