-
Notifications
You must be signed in to change notification settings - Fork 0
/
console.js
29 lines (23 loc) · 910 Bytes
/
console.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import colors from 'colors'
import { identity } from 'ramda'
import config from './config.json'
import * as core from '.'
const printCase = ({ state }) => {
const caseConf = config.cases[state]
return colors[caseConf.color](caseConf.char)
}
const printMap = ({ width, height, cases }) => {
const printRow = row => console.log('', [ '', ...row.map(c => cases.find(core.compareCase(c))).map(printCase), '' ].join(config.caseSeparator))
core.fetchMap({ width, height, onOuterIter: identity, onInnerIter: identity, onRow: printRow })
}
const printState = ({ generation, map }) => {
console.log('\x1Bc')
console.log(' Generation:', generation)
printMap(map)
}
let state = core.createInitialState({ width: config.width, height: config.height, alivePct: config.alivePct })
printState(state)
setInterval(() => {
printState(state)
state = core.computeNextState(state)
}, config.computeInterval)