/
27.06.2021 at 12:49 pm
Cuttings

Eloquent Javascript / Chapter 2, Exercise 03

Chessboard - in which I review ternary operators.

... 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:

# # # #   
 # # # #  
# # # #   
 # # # #  
# # # #   
 # # # #  
# # # #
  1. Personally I'm not a fan of the "?" syntax. I think Python's ternary operator looks cleaner.

  2. It's possible to use a ternary operator in place of a regular if is possible, but I find it quite unreadable.

Code
                        // **Solution 1**: Explicit and repetitive.

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.

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)
}
                    
Filed under:
#
#
Words: 54 words approx.
Time to read: 0.22 mins (at 250 wpm)
Keywords:
, , , , , , , , ,

Other suggested posts

  1. 18.12.2024 at 11:32 pm / Legalese Incantations
  2. 01.04.2023 at 11:27 am / Search Notes Fast: With Taskwarrior, jq & ripgrep
  3. 23.03.2023 at 11:12 am / Copywork vs Master Studies
  4. 15.06.2022 at 01:04 am / Prepackaged Thought Cassettes
  5. 07.04.2021 at 12:00 am / Harangued Commitments
  6. 21.08.2018 at 10:59 am / Roses as Time
  7. 04.01.2018 at 12:00 am / Java Almost Requires An IDE
  8. 16.12.2017 at 12:00 am / Sketch, Draft, Craft
  9. 19.07.2015 at 12:00 am / Deadened Demonyms
  10. 15.08.2010 at 12:00 am / 海老
© Wan Zafran. See disclaimer.