R
например n=10 a=[1, 0, 2]
function t(a, n, j, acc, flag) {
if (!a.length) return;
n += '';
let maxDigitIndex = 0;
if (j === 0 && j !== n.length - 1)
maxDigitIndex = a.findIndex(v => v <= n[j]);
else if (flag)
maxDigitIndex = a.findIndex(v => v < n[j]);
if (maxDigitIndex === -1) return;
const digit = a[maxDigitIndex] + '';
if (acc.length === n.length - 1)
return digit;
else {
let arr = [...a];
arr.splice(maxDigitIndex, 1);
j++;
acc += digit;
flag = n[j] !== digit;
return digit + t(arr, n, j, acc, flag);
}
}
function test(a, n) {
a = [...a].sort((a, b) => b - a);
while (n) {
const result = +t(a, n, 0, '', true);
if (!result) n--;
else return result;
}
}
