function isContainedIn(subArr, superArr) {
let mu = true;
const checkFn = (x) => {if (!superArr.includes(x)) { mu = false;}}
subArr.forEach(checkFn);
return mu;
}
// console.log(isContainedIn([1,2], [1,2,3])
function numberToArray(num) {
return num.toString().split('').map(x => parseInt(x));
}
function arrayToNumber(inputArr) {
return inputArr.reduce((a,b, index) => a + b * 10 ** (inputArr.length - index -1),0 )
}
// console.log(numberToArray(2345)
//console.log(arrayToNumber([2,3,4,5]))
function checkIfEligible(num) {
const result = [num]
const out = num.toString().split('').map(x => parseInt(x))
let dig = [1,2,3,4,5,6,7,8,9].filter(x => !out.includes(x))
let z = num;
while (dig.length !== 0) {
const n = z + num;
if (isContainedIn(numberToArray(n), dig )) {
result.push(n);
z = n
dig = dig.filter(x => !numberToArray(n).includes(x))
} else {
return [];
}
}
return result;
}
// console.log(checkIfEligible(192))
function calculatePanDigitalsWith(inputArr) {
if ( inputArr.length === 5 ) { return [] }
let resultArr = []
resultArr.push(checkIfEligible(arrayToNumber(inputArr)))
let availDig = [1,2,3,4,5,6,7,8,9].filter(x => !inputArr.includes(x))
for (let item of availDig ) {
resultArr = resultArr.concat(calculatePanDigitalsWith([...inputArr, item]))
}
return resultArr.filter(x => x.length > 0)
}
// We can restrict search to numbers with first digit 9 b/c
// we already now, that 918273645
console.log(calculatePanDigitalsWith([9]))