Build Tower

题目

Build Tower
Build Tower by the following given argument:
number of floors (integer and always greater than 0).

Tower block is represented as *

Python: return a list;
JavaScript: returns an Array;
C#: returns a string[];
PHP: returns an array;
C++: returns a vector;
Haskell: returns a [String];
Ruby: returns an Array;
Lua: returns a Table;
Have fun!

for example, a tower of 3 floors looks like below

1
2
3
4
5
[
' * ',
' *** ',
'*****'
]

and a tower of 6 floors looks like below

1
2
3
4
5
6
7
8
[
' * ',
' *** ',
' ***** ',
' ******* ',
' ********* ',
'***********'
]

思路

确定每行的星号和空格的数量,然后组合到一起,最后组合数组。

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function towerBuilder(nFloors) {
// 新建数组
var arr = new Array();
// 确定最后一行的星号数量
var n_bottom = nFloors * 2 - 1;
// 绘制每一行
for (var i = 1; i <= nFloors; i++) {
var n_space = nFloors - i;
var n_asterisk = i * 2 - 1;
var f_space = new String();
var f_asterisk = new String();
for (var j = 0; j < n_space; j++) {
f_space += " ";
}
for (var j = 0; j < n_asterisk; j++) {
f_asterisk += "*";
}
var floor = f_space + f_asterisk + f_space;
arr.push(floor);
}
return arr;
}