Skip to content

Instantly share code, notes, and snippets.

@dydx
Last active November 19, 2015 07:53
Show Gist options
  • Save dydx/59570ca7d18f23195330 to your computer and use it in GitHub Desktop.
Save dydx/59570ca7d18f23195330 to your computer and use it in GitHub Desktop.
// Josh Sandlin <josh@thenullbyte.org>
// Code for WDI-Fundamentls Exercises: 6.1.1, 6.2.1, 6.3.1
// Linted with the Standard JS Linter
var checkerboard = [
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null],
[null, null, null, null, null, null, null, null]
]
// eh
function setSquare (player, row, col) {
checkerboard[row - 1][col - 1] = player
}
// eh
function getPieceAt (row, col) {
return checkerboard[row - 1][col - 1]
}
// good
function clearBoard (board) {
return board.map(function (row) {
return row.map(function (col) {
return null
})
})
}
// good
function setUpSide (player, row, col) {
if (row % 2 === 0) {
if (col % 2 === 0) {
return player
} else {
return null
}
} else {
if (col % 2 !== 0) {
return player
} else {
return null
}
}
}
// good
function setUpRed (row, col) {
return setUpSide('R', row, col)
}
// good
function setUpBlack (row, col) {
return setUpSide('B', row, col)
}
// good
function setUpBoard (board) {
return board.map(function (row, row_index) {
return row.map(function (col, col_index) {
if (row_index <= 2) {
// set up red half
return setUpRed(row_index, col_index)
} else if (row_index >= 5) {
// set up black half
return setUpBlack(row_index, col_index)
} else {
return null
}
})
})
}
// ----- check our work ----- //
var checkerboard = setUpBoard(checkerboard)
console.log(checkerboard)
var pieces = {}
pieces['red'] = []
pieces['black'] = []
for (var i = 0; i <= 7; i++) {
for (var j = 0; j <= 7; j++) {
if (checkerboard[i][j] === 'R') {
pieces['red'].push([i, j])
} else if (checkerboard[i][j] === 'B') {
pieces['black'].push([i, j])
}
}
}
console.log(pieces['red'].map(function (piece) {
var row = piece[0]
var col = piece[1]
return checkerboard[row][col] === 'R'
}))
console.log(pieces['black'].map(function (piece) {
var row = piece[0]
var col = piece[1]
return checkerboard[row][col] === 'B'
}))
@dydx
Copy link
Author

dydx commented Nov 19, 2015

[ [ 'R', null, 'R', null, 'R', null, 'R', null ],
  [ null, 'R', null, 'R', null, 'R', null, 'R' ],
  [ 'R', null, 'R', null, 'R', null, 'R', null ],
  [ null, null, null, null, null, null, null, null ],
  [ null, null, null, null, null, null, null, null ],
  [ null, 'B', null, 'B', null, 'B', null, 'B' ],
  [ 'B', null, 'B', null, 'B', null, 'B', null ],
  [ null, 'B', null, 'B', null, 'B', null, 'B' ] ]
[ true, true, true, true, true, true, true, true, true, true, true, true ]
[ true, true, true, true, true, true, true, true, true, true, true, true ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment