Published on

# Printing a Pyramid Pattern - JavaScript Algorithms

Authors
• Name
Curtis Warcup

Directions: Write a function that accepts a positive number N. The function should `console.log()` a pyramid shape with N levels using the "#" character. Make sure the pyramid has spaces on both the left and right hand sides.

Examples:

``````pyramid(1)
;('#')
pyramid(2)
;(' # ')
;('###')
pyramid(3)
;('  #  ')
;(' ### ')
;('#####')
``````

# Iterative Solution

• Calculate the midpoint of the number of columns. Get the index here.
• Need to determine relationship between the number of rows and the number of columns. Can be done with `n * 2 - 1`.
• Need to create a range where we want to add `#` characters.
``````const column = [0, 1, 2, 3, 4]
const row = 0
// need to produce a '#' at index 2 from row of 0

const column = [0, 1, 2, 3, 4]
const row = 1
// need to produce a '#' at index 1,2,3 from row of 1, and spaces at index 0, 4
``````

If you determine the midpoint (center index), you can take the 'row' number and add it to the midpoint on either side.

``````function pyramid(n) {
const midpoint = Math.floor((2 * n - 1) / 2) // midpoint of our row

for (let row = 0; row < n; row++) {
let level = ''
// need to determine correct number of columns
for (let col = 0; col < n * 2 - 1; col++) {
// if we are in the middle of the row, add a '#'
// add a space to the left and right, depending on the row we are on.
if (midpoint - row <= col && midpoint + row >= col) {
level += '#'
} else {
level += ' '
}
}
console.log(level)
}
}
pyramid(4)
``````

# Recursive Solution

``````function pyramid(n, row = 0, level = '') {
if (row === n) {
return
}

// when we reach the end of a level.
// max number of columns is  2 * n - 1
if (level.length === 2 * n - 1) {
console.log(level)
return pyramid(n, row + 1)
}

// get midpoint index
const midpoint = Math.floor((2 * n - 1) / 2)

// contains the character we are adding to our level string