# Daily Codewars #18

# Question

http://www.codewars.com/kata/52755006cc238fcae70000ed/train/javascript Create a function christmasTree(height) that returns a christmas tree of the correct height

christmasTree(5) should return:

    *    
   ***   
  *****  
 ******* 
*********

Height passed is always an integer between 0 and 100.

Use \n for newlines between each line.

Pad with spaces so each line is the same length. The last line having only stars, no spaces.

# My Solution

function christmasTree(height) {
    var arr = [];
    for(i=1; i<=height; i++){
        var space = Array(height-i+1).join(' ');
        arr.push(space + Array(2*i).join('*') + space);
    }
    return arr.join('\n');
}

ECMA6부터 String.repeat을 지원한다. 'a'.repeat(3)처럼 쓸 수 있다. 하지만 지금은 아직 보편적이지 않으므로, Array(n).join('a')의 꼼수를 썼다. 처음에는 space를 '\xa0'로 join시켰는데 값이 똑같이 나오는데도 테스트가 통과 안해서 혹시 ' '로 바꿨더니 바로 통과되어 허무.

# @noLan's Solution

function christmasTree(height) {
  var tree = [];
  for(var i = 1; i <= height; i++) {
    tree.push(" ".repeat(height - i) + "*".repeat((i - 1) * 2 + 1) + " ".repeat(height - i));
  }
  return tree.join("\n");
}

String.prototype.repeat = function(n)
{
    return new Array(n+1).join(this);
}

이 사람은 내가 한 Array(n)에 넣는걸 String 프로토타입에 확장시켜 집어넣었다.