fold = (points, instructions, n) => {
let result = [...points]
instructions.forEach(({dir, pos}) => {
result
.filter(p => p[dir] > pos)
.forEach((p, i, arr) => {
arr[i][dir] = 2*pos - p[dir]
})
})
result = [...new Set(result.map(p => p.x+'-'+p.y))].map(p => p.split('-').map(v => parseInt(v)))
let [w,h] = ["x", "y"].map(dir => d3.min(instructions.filter(d => d.dir == dir).map(d => d.pos)))
return {result, w, h}
}