您的位置:首页 > Web前端 > JavaScript

2018年刑侦科推理试题【JavaScript解法】

2018-03-05 09:59 323 查看


刚刚朋友发来这张图,说自己做出来了,来考考我。
我整个人是懵逼的,逻辑渣是拒绝这种题的。
遍历找答案的话,那还差不多。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;
}


完美的唯一解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息