UNPKG

@thi.ng/grid-iterators

Version:

2D grid and shape iterators w/ multiple orderings

21 lines (20 loc) 533 B
import { diagonal2d } from "./diagonal.js"; import { __opts } from "./utils.js"; function* diagonalEnds2d(opts) { const { cols, rows, tx } = __opts(opts); const num = cols * rows - 1; const maxX = cols - 1; const maxY = rows - 1; const check = opts.all ? (i2) => i2 > 0 && i2 < num : () => true; let i = 0; for (let p of diagonal2d({ cols, rows })) { if (check(i)) { const [x, y] = p; if (x === 0 || x === maxX || y === 0 || y === maxY) yield tx(x, y); } i++; } } export { diagonalEnds2d };