function getPINs(observed) {
let objPin = new GetPin(observed),
_getVal= objPin.value
if(objPin.observedLength <= 1) return objPin.kuNum[observed === '0'? 10 : observed]
observed.split('').map(val => {
val = val === '0' ? 10 : val
_getVal.key.leng.push(objPin.kuNum[val].length)
_getVal.key.nums.push(objPin.kuNum[val])
})
let vals = _getVal.max()
let dygx = []
let resArr = [[],[],[],[],[],[],[],[]]
_getVal.key.leng.map((res,index) => {
objPin.vs.push([])
vals = vals/_getVal.key.leng[index]
objPin.vs[index] = vals
})
let arr = Array.from(objPin.vs).reverse()
_getVal.key.nums.map((val, index)=>{
dygx.push({name:'',int:[]})
val.map((oVal,oIndex) =>{
for(let i = 0; i<objPin.vs[index]; i++){
dygx[index].name = arr[index]
dygx[index].int.push(oVal)
}
})
})
console.log(resArr)
dygx.map((res,index) => {
for(let i = 0; i<res.name; i++){
resArr[index] = resArr[index].concat(res.int)
}
})
let values = []
for(let i = 0; i< resArr[0].length; i++){
switch(objPin.observedLength){
case 2:
values.push(resArr[0][i]+resArr[1][i])
break
case 3:
values.push(resArr[0][i]+resArr[1][i]+resArr[2][i])
break
case 4:
values.push(resArr[0][i]+resArr[1][i]+resArr[2][i]+resArr[3][i])
break
case 8:
values.push(resArr[0][i]+resArr[1][i]+resArr[2][i]+resArr[3][i]+resArr[4][i]+resArr[5][i]+resArr[6][i]+resArr[7][i])
break
}
}
return values
}
function GetPin(observed){
this.observed = String(observed);
this.observedLength = observed.length;
this.vs = [];
this.value = {
key:{
leng:[],
nums:[]
},
whileNum:[],
isNum:[],
max:() => this.value.key.leng.reduce((a,b) => a * b),
results:[]
}
this.kuNum = [
[],
["1","2","4"],
["1","2","3","5"],
["2","3","6"],
["1","4","5","7"],
["2","4","5","6","8"],
["3","5","6","9"],
["4","7","8"],
["5","7","8","9","0"],
["6","8","9"],
["0","8"]
]
}
console.log(getPINs('007').sort())
console