@thi.ng/transducers
Version:
Collection of ~170 lightweight, composable transducers, reducers, generators, iterators for functional data transformations
35 lines (34 loc) • 760 B
JavaScript
import { illegalArity } from "@thi.ng/errors/illegal-arity";
import { range } from "./range.js";
function* range3d(...args) {
let fromX, toX, stepX;
let fromY, toY, stepY;
let fromZ, toZ, stepZ;
switch (args.length) {
case 9:
stepX = args[6];
stepY = args[7];
stepZ = args[8];
case 6:
[] = args;
break;
case 3:
[] = args;
fromX = fromY = fromZ = 0;
break;
default:
illegalArity(args.length);
}
const rx = range(fromX, toX, stepX);
const ry = range(fromY, toY, stepY);
for (let z of range(fromZ, toZ, stepZ)) {
for (let y of ry) {
for (let x of rx) {
yield [x, y, z];
}
}
}
}
export {
range3d
};