function calc(val, arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]) {
let options = [];
for (let i = 1; i < arr.length; ++i) {
for (let n = 0; n <= i; ++n) {
options.push([n / i, n, i]);
}
}
options = options.sort(([a], [b]) => a - b).filter(onlyUnique);
let prev = [0, 0, 0];
for (let o = 0; o < options.length; ++o) {
if (options[o][0] > val) {
if (options[o][0] - val > val - prev[0]) {
return [...prev, val - prev[0]];
} else {
return [...options[o], options[o][0] - val];
}
}
prev = options[o];
}
return prev;
}