/
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. 23.03.2023 at 11:12 am / Copywork vs Master Studies
  2. 20.06.2022 at 01:56 pm / Cultists of Science
  3. 11.06.2022 at 09:09 pm / 大蛇に嫁いだ娘 - The Girl Married to the Giant Serpent
  4. 27.04.2020 at 07:11 pm / How Science Should Be
  5. 29.08.2018 at 11:06 am / Damascus Differences
  6. 21.08.2018 at 10:59 am / Roses as Time
  7. 19.08.2018 at 02:13 pm / Saunter Not
  8. 14.06.2015 at 12:00 am / Just the Two of Us (6-Bar Guitar/Sax Copy)
  9. 08.11.2013 at 12:00 am / Red Riding Hood's Examination-in-Chief
  10. 14.08.2010 at 12:00 am / 百花繚乱
© Wan Zafran. See disclaimer.