図形出力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);