The goal of this problem is to take in a number (example – 4, and then print out that number of steps). There must be a space to pad out the rest of the character. Ex. n=4; loop 1 will be one # and three spaces for a total of 4 characters:
# ## ### ####
I’m still working through Grider’s Udemy course on interview questions. First I did it my own way that used two nested for loops. I create an array called “step.” Variable i loops through the number passed to the function (n=4 in the above illustration). Variable j loops through and pushes the “#” symbol to the array based on the value of i. Then the variable k loops through n-i times and pushes a ” ” to the array “step.” Lastly, I use the join(“”) method to console log a string. It’s not elegant, but it works.
// OPTION 1 function steps(n) { // console.log("function called"); // console.log("n ", n); step = []; for (let i=1; i<=n; i++) { // console.log("i ", i); for (let j=1;j<=i; j++) { // console.log("j ", j); step.push("#"); } for (let k=1; k<=n-i; k++) { // console.log("k ", k); step.push(" "); } console.log(step.join("")); step = []; } }
Option 2 – This is a much simpler solution that uses a nested loop with the outside loop representing rows and the inside loop representing columns. This looks at the problem as a grid. If the column is <= row, it outputs a “#” otherwise, it outputs a ” “(blank space).
//OPTION 2 for (let row=0; row<n; row++) { let stair = ""; for (let column=0; column < n; column++) { if(column<=row) { stair += "#"; } else { stair += " "; } } console.log(stair); } }
Option 3 – Recursive Solution
// OPTION 3 function steps(n, row=0, stair = "") { if (n === row) { return; } if (n === stair.length) { console.log(stair); return steps(n, row+1); } if (stair.length <= row) { stair +="#"; } else { stair += " "; } steps(n, row, stair); }