console
var findMatch = (str, num) =>{
var xPos = [];
var allPos = [];
for (var i = 0, l = str.length; i < l; i++) {
if (str.charAt(i) === 'X') {
xPos.push(i);
}
allPos.push(str[i]);
}
var result = [];
var fn = (pos) =>{
for (var i = 0; i < pos.length; i++) {
allPos[xPos[i]] = pos[i];
}
var target = +allPos.join('');
if (target % num === 0) {
result.push(target);
}
}
deep(fn ,xPos.length);
return result.length;
}
var deep = (fn, deeplen) =>{
var rs = null;
var args = [];
var content = 'var trueArgs = [];for(var i =0;i<args.length;i++){trueArgs[i]=eval(args[i])}rs = fn(trueArgs);';
for (var i = 0; i < deeplen; i++) {
args.push(`iter${i}`);
content = `for ( var iter${i} = 0; iter${i}<=9; iter${i}++){ ${content} }`;
}
new Function('fn', 'args', content)(fn, args);
return rs;
}
function loop(fn, n, args = []) {
if (n === 0) {
rs = fn.call(null, args);
return rs;
}
for (let i = 0; i <= 9; i++) {
loop(fn, n - 1, args.concat(i));
}
}
let createNestedLoop = (fn, deepLength) => {
let createClosure = (closure, layer) => {
return (arr) => {
for (let i = 0; i <= 9; i++) {
arr[layer] = i
closure(arr)
}
}
}
for (let i = deepLength; i > 0; i--) {
fn = createClosure(fn, i - 1)
}
return () => {
fn(new Array(deepLength).fill(0))
}
}
getDom = (id) => document.getElementById(id)
var cal = getDom('cal')
var str = getDom('str');
var num = getDom('num');
var matchRs = getDom('match');
cal.onclick = () => {
matchRs.innerText=findMatch(str.value, num.value);
}
<div class="p-entry">
<p>
易老师购买了一盒饼干,盒子中一共有k块饼干,但是数字k有些数位变得模糊了,看不清楚数字具体是多少了。易老师需要你帮忙把这k块饼干平分给n个小朋友,易老师保证这盒饼干能平分给n个小朋友。现在你需要计算出k有多少种可能的数值
<br>
<strong>
输入描述:
</strong>
</p>
<blockquote>
<p>
输入包括两行:
</p>
<p>
第一行为盒子上的数值k,模糊的数位用X表示,长度小于18(可能有多个模糊的数位)
</p>
<p>
第二行为小朋友的人数n
</p>
</blockquote>
<p>
<strong>
输出描述:
</strong>
</p>
<blockquote>
<p>
输出k可能的数值种数,保证至少为1
</p>
</blockquote>
<p>
<strong>
输入例子:
</strong>
</p>
<blockquote>
<p>
9999999999999X
<br>
3
</p>
</blockquote>
<p>
<strong>
输出例子:
</strong>
</p>
<blockquote>
<p>
4
</p>
</blockquote>
</div>
<br/>
<p><b>演示:</b></p>
<div id='result'>
<input type="text" id='str' value='23X7X3X' /><br/>
<input type="text" id='num' value='32'/><br/>
<button id='cal'>计算</button>
<div>结果:<span id="match"></span></div>
<div>