出于教学目的,我试图完成这一挑战: 生成一个随机的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技术,任何技巧或建议?
答案 0 :(得分:0)
@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]);
}