Skip to content

Instantly share code, notes, and snippets.

@scriptype
Last active November 15, 2018 23:48
Show Gist options
  • Save scriptype/f94421576a4b60fe21b495b83d85c6f1 to your computer and use it in GitHub Desktop.
Save scriptype/f94421576a4b60fe21b495b83d85c6f1 to your computer and use it in GitHub Desktop.
Rotate bitmap
var asset = {
bitmap: [
`A A A B B B`,
`A . . . . B`,
`A . 1 1 . B`,
`D . 2 2 . C`,
`D . . . . C`,
`D D D C C C`
].map(row => row.split(' ')),
size: 6
}
var getColumn = (grid, n) =>
grid.reduce((acc, curr, index) => acc.concat(curr[n]), [])
var joinGrid = grid => grid.map(row => row.join(' ')).join('\n')
var rotate90 = ({ bitmap, size }, times) => {
var rotated = [...Array(size).keys()].map(i => getColumn(bitmap, i).reverse())
return times ? rotate90({ bitmap: rotated, size }, times - 1) : rotated
}
var rotate180 = grid => rotate90(grid, 1)
var rotate270 = grid => rotate90(grid, 2)
console.log(joinGrid(asset.bitmap))
/*
A A A B B B
A . . . . B
A . 1 1 . B
D . 2 2 . C
D . . . . C
D D D C C C
*/
console.log(joinGrid(rotate90(asset)))
/*
D D D A A A
D . . . . A
D . 2 1 . A
C . 2 1 . B
C . . . . B
C C C B B B
*/
console.log(joinGrid(rotate180(asset)))
/*
C C C D D D
C . . . . D
C . 2 2 . D
B . 1 1 . A
B . . . . A
B B B A A A
*/
console.log(joinGrid(rotate270(asset)))
/*
B B B C C C
B . . . . C
B . 1 2 . C
A . 1 2 . D
A . . . . D
A A A D D D
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment