Another update from ingydotnet^djgoku

This commit is contained in:
Ingy döt Net 2015-11-18 06:14:39 +00:00
parent 91df62d461
commit 948b86eafa
7604 changed files with 108452 additions and 22726 deletions

View file

@ -0,0 +1,41 @@
const _ = require('lodash');
///////////////////
// LODASH IMPORT //
///////////////////
// import all lodash functions to the main namespace, but isNaN not to cause conflicts
_.each(_.keys(_), k => global[k === 'isNaN' ? '_isNaN' : k] = _[k]);
///////////////
// FUNCTIONS //
///////////////
const WORLD_WIDTH = 3,
WORLD_HEIGHT = 3,
displayWorld = (world) => console.log(map(world, x => x.join(' ')).join('\n') + '\n'),
aliveNeighbours = (world, x, y) => chain(range(-1, 2))
.reduce((acc, i) => acc.concat(map(range(-1, 2), ii => [i, ii])), [])
.reject(partial(isEqual, [0, 0]))
.map(i => {
try {
return world[x + i[0]][y + i[1]];
} catch (err) {
return null;
}
})
.compact()
.value()
.length,
isAlive = (cell, numAliveNeighbours) => (cell === 1 && inRange(numAliveNeighbours, 2, 4)) || (cell === 0 && numAliveNeighbours === 3) ? 1 : 0,
updateWorld = (world) => map(world, (row, rowidx) => map(row, (cell, colidx) => isAlive(cell, aliveNeighbours(world, rowidx, colidx))));
// let world = map(range(WORLD_WIDTH), partial(ary(map, 2), range(WORLD_HEIGHT), partial(random, 0, 1, false)));
let world = [[0, 0, 0], [1, 1, 1], [0, 0, 0]];
setInterval(() => {
world = updateWorld(world)
displayWorld(world);
}, 1000);