図形出力2 解答例

by yshrkn

HTML

<!--
◆◆◆◆
 ◆ ◆
  ◆◆
   ◆

◆◆◆◆◆
 ◆  ◆
  ◆ ◆
   ◆◆
    ◆

◆◆◆◆◆◆
 ◆   ◆
  ◆  ◆
   ◆ ◆
    ◆◆
     ◆

◆◆◆◆◆◆◆
 ◆    ◆
  ◆   ◆
   ◆  ◆
    ◆ ◆
     ◆◆
      ◆
****************

●1辺が4の場合の 空白行:個数
2行目: 1コ


●1辺が5の場合の 空白行:個数
2行目: 2コ
3行目: 1コ


●1辺が6の場合の 空白行:個数
2行目: 3コ
3行目: 2コ
4行目: 1コ


●1辺が7の場合の 空白行:個数
2行目: 4コ
3行目: 3コ
4行目: 2コ
5行目: 1コ

↓ 

★空白が必要な行は、2行目 ~ lineLength - 2
★↑の条件下で、空白はlineLength - 3の値から出力し、
現在の行が増えるごとにデクリメントされる

-->

JavaScript

var lineLength = 4;
var char = "◆";
var halfSpace = " ";
var space = " ";

function drawTriangle(lineLength, char) {

  console.log("1辺が" + lineLength + "の正三角形を、" + char + "を用いて、外枠のみ出力します。");

  //1行ごとに実行される
  for (var currentLine = 0; currentLine < lineLength; currentLine++) {

    var str = "";
    var shouldDrawSpace = 0 < currentLine && currentLine < (lineLength - 2) ? true : false;

    //先頭に半角スペースを入力
    for (var i = 0; i < currentLine; i++) {
      str += halfSpace;
    }
    
    //出力する記号を入力
    drawChar:
    for (var j = 0; j < (lineLength - currentLine); j++) {
      
      if (shouldDrawSpace) {
        //空白を最初の記号を出力した直後から、何文字目までを出力するか
        if (j > 0 && j < ((lineLength - currentLine) - 1)) {
          
          //空白挿入処理
          for (var spaceCnt = lineLength - 3; spaceCnt > 0; spaceCnt--) {
            str += space;
            continue drawChar;
          }
        }
      }

      str += char;
    } 

    //出力
    console.log(str + "\n");
  }
}

drawTriangle(lineLength, char);