/
27.06.2021 at 12:49 pm
Cuttings

Eloquent Javascript / Chapter 2, Exercise 03

Chessboard - in which I review ternary operators.

Problem

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:

   # # # #   
    # # # #  
   # # # #   
    # # # #  
   # # # #   
    # # # #  
   # # # #

Discussion

  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.

Solution

  1. 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
    }
    ```
    
  2. 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)
    }
    ```
    

Filed under:
#
Words: 342 words approx.
Time to read: 1.37 mins (at 250 wpm)
Keywords:
, , , , , , , , ,

Other suggested posts

  1. 27.04.2020 at 07:11 pm / How Science Should Be
  2. 05.02.2020 at 10:26 pm / Nostalgic Raging Streets
  3. 17.12.2017 at 12:00 am / To Know C
  4. 16.12.2017 at 12:00 am / Sketch, Draft, Craft
  5. 08.02.2016 at 12:00 am / Eye to Eye (Jonathan Young's Version)
  6. 06.09.2015 at 12:00 am / Big Illegal Guns
  7. 26.12.2013 at 12:00 am / Teal Stares
  8. 03.07.2013 at 12:00 am / Craft Versus Discipline
  9. 26.08.2010 at 12:00 am /
  10. 20.08.2010 at 12:00 am / 堰かれて募る恋の情
© Wan Zafran. See disclaimer.