function generation(offsets, cells) {
let newCells = new Set();
[...cells].forEach((cell) => {
newCells = AOC.union(newCells, neighbours(offsets, cell));
return newCells.add(cell);
});
return new Set([...newCells].filter((p) => live(offsets, cells, p)));
}