DEV Community

Discussion on: JavaScript Katas: Draw Chessboard

Collapse
 
kosich profile image
Kostia Palchyk • Edited

Couldn't let this kata go out of my mind, wanted to try something alternative:

const drawChessboard = (r, c) => [
    ...{ * [Symbol.iterator]() {
      for (let i = 0; i < r; i++) yield [
        ...{ * [Symbol.iterator]() {
          for (let j = i; j < c + i; j++) yield ['X', 'O'][j % 2]
        }}
      ]
    }}
  ]
Enter fullscreen mode Exit fullscreen mode
Collapse
 
lbermudez profile image
lbermudez

@kosich I've fixed and simplified your approach (thanks because it help me to open mind with generators + spread operator):

const drawChessboard = (r, c) => [
    ...(function* () {
        for (let i = 0; i < r; i++)
            yield [
                ...(function* () {
                    for (let j = 0; j < c; j++)
                        yield ['O', 'X'][(i + j) % 2];
                })(),
            ];
    })(),
];
Enter fullscreen mode Exit fullscreen mode