出于教学目的,我正在尝试完成这个挑战:生成一个随机的3位数(1-9) Char序列是DESC,例如"123“是一个无效的数字,原因是1>2和2> 3;"321”是有效的。
当您尝试猜测数字时,它返回C表示精确位置中的正确字符,返回N表示错误位置中的正确字符,例如:
randomly generated "961"
algorithm try "321" and XPTO returns C = 1 and N = 0
algorithm try "654" and XPTO returns C = 0 and N = 1
我们的目标是以尽可能少的尝试高效地获取C=3,甚至不知道我需要学习哪种AI技术,有什么建议或建议吗?
发布于 2018-12-23 05:00:57
在@juvian的提示之后,我构建了一个js解决方案。
首先创建一个列表:
function generateList(){
List = new Array();
for (i = 1; i <= 7; i++) {
for (j = i+1; j <= 8; j++) {
for (k = j+1; k <= 9; k++) {
List.push(""+k+j+i);}}}
WriteResult(List.length,List[0]);
}
然后进行测试,并从列表中排除“不可能”的组合
for( var i = List.length-1; i >= 0; i--){
var C = Number(document.getElementById("C").value);
var N = Number(document.getElementById("N").value);
var Guess = ""+Number(document.getElementById("Guess").value);
var CountC = 0
var CountN = 0
for( var j = 0; j < 3; j++)
{
if (Guess.substr(j, 1) == List[i].substr(j, 1)) {CountC++;}
else if (List[i].split(Guess.substr(j, 1)).length > 1) {CountN++;}
}
console.log(List[i]+" C:"+CountC+" N:"+CountN);
if (CountC != C || CountN != N) {List.splice(i, 1); }
}
WriteResult(List.length,List[0]);
}
https://stackoverflow.com/questions/52503826
复制相似问题