'use strict' const _utils = require('./_utils') function getColumns(game) { return game.board } function getRows(game) { return _utils.inverse2D(game.board) } function getNWDiagonals(game) { return _utils.range(game.width + game.height - 1).map(edge => { // taking top and left edge let i = edge < game.width ? edge : 0 let j = edge < game.width ? 0 : edge - game.width + 1 const arr = [] while(i < game.width && j < game.height) { arr.push(game.board[i][j]) i++, j++ } return arr }) } function getNEDiagonals(game) { return _utils.range(game.width + game.height - 1).map(edge => { // taking top and right edge let i = edge < game.width ? edge : game.width - 1 let j = edge < game.width ? 0 : edge - game.width + 1 const arr = [] while(i >= 0 && j < game.height) { arr.push(game.board[i][j]) i--, j++ } return arr }) } function getItems(game) { return getColumns(game).reduce((mem, column) => mem.concat(column), []) } module.exports = { getColumns, getRows, getItems, getNWDiagonals, getNEDiagonals, }