刚刚朋友发来这张图,说自己做出来了,来考考我。
我整个人是懵逼的,逻辑渣是拒绝这种题的。
遍历找答案的话,那还差不多。
for (var i = 0; i < Math.pow(4,10); i++) { var tempAnswer=i.toString(4).padStart(10, '0') ; if (judge(tempAnswer)) { let alp="ABCD"; let result=""; for(let i=0;i<tempAnswer.length;i++){ result+=(alp[tempAnswer[i]]); } console.log(result); } } function judge(tempAnswer) { //第二题 let judge2="2301"; if (judge2[tempAnswer[1]]!=tempAnswer[4]) { return false; } //第三题 let judge3="2513"; judge3=judge3.replace(judge3[tempAnswer[2]],""); if (tempAnswer[judge3[0]]!=tempAnswer[judge3[1]]||tempAnswer[judge3[1]]!=tempAnswer[judge3[2]]||tempAnswer[judge3[0]]!=tempAnswer[judge3[2]]){ return false; } //第四题 let judge4=[[0,4],[1,6],[0,8],[5,9]]; if (tempAnswer[judge4[tempAnswer[3]][0]]!=tempAnswer[judge4[tempAnswer[3]][1]]) { return false; } //第五题 let judge5="7386"; if (tempAnswer[4]!==tempAnswer[judge5[tempAnswer[4]]]) { return false; } //第六题 let judge6=[[1,3],[0,5],[2,9],[5,9]]; if (tempAnswer[7]!==tempAnswer[judge6[tempAnswer[5]][0]]||tempAnswer[7]!==tempAnswer[judge6[tempAnswer[5]][1]]) { return false; } //第七题 let judge7="2103"; let count=[0,0,0,0]; for(let i=0;i<10;i++){ count[tempAnswer[i]]++; } let min=Math.min(...count); let max=Math.max(...count); for(let i=0;i<4;i++){ if (min==count[i]) { if (judge7[tempAnswer[6]]!=i) { return false; } } } //第八题 let judge8="6419"; if (tempAnswer[7]-tempAnswer[judge8[tempAnswer[7]]]==-1||tempAnswer[7]-tempAnswer[judge8[tempAnswer[7]]]==1) { return false; } //第九题 let judge9="5918" if (tempAnswer[0]==tempAnswer[5]&&tempAnswer[4]==tempAnswer[judge9[tempAnswer[8]]]) { return false; } if (tempAnswer[0]!=tempAnswer[5]&&tempAnswer[4]!=tempAnswer[judge9[tempAnswer[8]]]) { return false; } //第十题 let judge10="3241"; if((max-min)!=judge10[tempAnswer[9]]){ return false } return tempAnswer; }
完美的唯一解。