Write a program that creates a string that represents an 8×8 grid, using newline characters to separate lines.
At each position of the grid there is either a space or a "#" character. The characters should form a chessboard.
Passing this string to console.log should show something like this:
# # # # # # # # # # # # # # # # # # # # # # # # # # # #
Personally I'm not a fan of the "?" syntax. I think Python's ternary operator looks cleaner.
It's possible to use a ternary operator in place of a regular if is possible, but I find it quite unreadable.
Solution 1: Explicit and repetitive.
``` javascript
grid_size = 8
invert = true
for (let row = 0; row < grid_size; row++) {
row_string = `${row+1} `
if (invert) {
white = " "
black = "#"
} else {
white = "#"
black = " "
}
for (let col = 0; col < grid_size; col++) {
if (col % 2 === 0) {
row_string += `${white}`
} else {
row_string += `${black}`
}
}
console.log(row_string)
invert = invert ? false : true
}
```
Solution 2: cleaner, shorter. The ternary operator here isn't as readable as an if statement. I also find it quite confusing, since the .reverse() method comes as a statement, and does not mark a return value.
```javascript
grid_size = 8
invert = true
switches = [" ", "#"]
for (let row = 0; row < grid_size; row++) {
row_string = `${row + 1} `
row % 2 === 0 ? switches : switches.reverse()
for (let col = 0; col < grid_size; col++) {
if (col % 2 === 0) {
row_string += `${switches[0]}`
} else {
row_string += `${switches[1]}`
}
}
console.log(row_string)
}
```