var getEle = fp.curry(function(ele) { return (document.querySelectorAll(ele).length === 1) ? document.querySelector(ele) : [...document.querySelectorAll(ele)]; }); function hexColor() { var values = "01233456789ABCDEF"; var result = []; for(var i = 0; i < 6; i++) { result.push(values[Math.floor(Math.random() * 16)]); } return '#'+result.join(''); } var css = fp.curry(function(cssObj, ele) { for(var key in cssObj) { ele.style[key] = cssObj[key]; } return ele; }); //-------------------------------- var count_neighbours = function(r, c, grid) { var count = 0; if (r > 0) { count += grid[r-1][c]; } if (r < grid.length-1) { count += grid[r+1][c]; } if (c > 0) { count += grid[r][c-1]; } if (c < grid.length[0]-1) { count += grid[r][c+1]; } return count; }; var update_grid = function(grid) { var count; var nrows = grid.length; var ncols = grid[0].length; for (var r=0; r 2) { grid[r][c] = 0; } if (grid[r][c] == 0 && count <= 2) { grid[r][c] = 1; } } } return grid; }; var render_grid = fp.curry(function(ctx, grid) { var height = ctx.canvas.height; var width= ctx.canvas.width; var nrows = grid.length; var ncols = grid[0].length; ctx.clearRect(0, 0, width, height); for (var r=0; r 0.8) ? 1:0; } } console.log(grid); return grid; } //app("board", 500, grid0); app("board", 500, random_grid(200, 200));