function applyMask2(mask, val) {
const combine = (b1, b2) => (b1 === "0" ? b2 : b1);
const addr = AOC.zipWith(combine, mask, val);
const xps = xPositions(mask, val);
const addrs = [...Array(Math.pow(2, xps.length)).keys()].map((n) =>
AOC.decToBinary(n, xps.length).split("")
);
return addrs.map((digits) => {
const newAddr = AOC.cloneArray(addr);
digits.forEach((d, i) => (newAddr[xps[i]] = d));
return newAddr.join("");
});
}