Skip to content

Instantly share code, notes, and snippets.

@alpham
Created May 21, 2016 22:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alpham/6a4b395393f5db9b5cbf7fcecaba4615 to your computer and use it in GitHub Desktop.
Save alpham/6a4b395393f5db9b5cbf7fcecaba4615 to your computer and use it in GitHub Desktop.
function createPyramid(base){
if (base%2 == 0){
throw "Pyramid base must be odd number"
}
var left = createLeftSide(base);
var right = createRightSide(base);
var final = [];
for (var i = 0; i < left.length; i++) {
final[i] = left[i].concat(right[i]);
}
return print(final);
///////////////////////////////////
function createLeftSide(num){
function createLeftRow(lNum, start, lSize){
var lRow = [];
for (var i = lNum; i > 0; i--) {
lRow.push(start);
start = start === 0 ? " " : 0;
}
while (lRow.length!=lSize) {
lRow.unshift(" ");
}
return lRow
}
var lArr = [];
var lSize = Math.floor(num / 2);
for (var i = lSize; i >= 0; i--) {
lArr.push(createLeftRow(i, 0, lSize));
}
return lArr;
}
function createRightSide(num){
function createRightRow(rNum, start, rSize){
var rRow = [];
for (var i = rNum; i > 0; i--) {
rRow.push((start === 0 ? " " : 0));
start = start === 0 ? " " : 0;
}
while (rRow.length!=rSize) {
rRow.push(" ");
}
return rRow
}
var rArr = [];
var rSize = Math.ceil(num / 2);
for (var i = rSize; i > 0; i--) {
rArr.push(createRightRow(i, (i%2==0 ? 0 : " "), rSize));
}
return rArr;
}
function print(arr){
for (var i = 0; i < arr.length; i++) {
console.log('|' + arr[i].join('|') + '|');
}
}
}
createPyramid(11);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment