genSkew = (cols, reverse, plus) => arr => {
const len = arr.length;
const rows = Math.ceil(len / cols);
let res = [];
for (let row = 0; row < rows; row++) {
const extra = plus ? (row / cols) |0 : 0;
for (let col = 0; col < cols; col++) {
const newCol = (col + row + extra) % cols;
if (reverse) {
res[row * cols + newCol] = arr[row * cols + col];
} else {
res[row * cols + col] = arr[row * cols + newCol];
}
}
}
return res;
}