博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS解出网络疯传的“刑侦推理题”
阅读量:6084 次
发布时间:2019-06-20

本文共 5130 字,大约阅读时间需要 17 分钟。

题目如下:

解题方法:

var arr = new Array(10).fill("A");    var flag = true ;    run(); // ["B", "C", "A", "C", "A", "C", "D", "A", "B", "A"]    function run () {        try {            if(flag){                flag = false ;                recursion() ;            }        } catch (err) {            flag = true;            run();        }    }        function a1 (){        return true;    }    function a2 (){        switch(arr[1])        {        case "A":            return arr[4] === "C"        case "B":            return arr[4] === "D"        case "C":            return arr[4] === "A"        case "D":            return arr[4] === "B"        default:            return false;        }    }    function a3 (){        switch(arr[2])        {        case "A":            return arr[5] === arr[1] && arr[5] === arr[3]        case "B":            return arr[2] === arr[1] && arr[2] === arr[3]        case "C":            return arr[5] === arr[2] && arr[5] === arr[3]        case "D":            return arr[5] === arr[1] && arr[5] === arr[2]        default:            return false;        }    }    function a4 (){        var f1 = arr[0] === arr[4] ,            f2 = arr[1] === arr[6] ,            f3 = arr[0] === arr[8] ,            f4 = arr[5] === arr[9] ;        switch(arr[3])        {        case "A":            return f1 && !f2 && !f3 && !f4        case "B":            return !f1 && f2 && !f3 && !f4        case "C":            return !f1 && !f2 && f3 && !f4        case "D":            return !f1 && !f2 && !f3 && f4        default:            return false;        }    }    function a5 (){        switch(arr[4])        {        case "A":            return arr[7] === "A"        case "B":            return arr[3] === "B"        case "C":            return arr[8] === "C"        case "D":            return arr[6] === "D"        default:            return false;        }    }    function a6 (){        var f1 = arr[7] === arr[1] && arr[7] === arr[3] ,            f2 = arr[7] === arr[0] && arr[7] === arr[5] ,            f3 = arr[7] === arr[2] && arr[7] === arr[9] ,            f4 = arr[7] === arr[4] && arr[7] === arr[8] ;        switch(arr[5])        {        case "A":            return f1 && !f2 && !f3 && !f4        case "B":            return !f1 && f2 && !f3 && !f4        case "C":            return !f1 && !f2 && f3 && !f4        case "D":            return !f1 && !f2 && !f3 && f4        default:            return false;        }    }    function a7 (){        var c1 = arr.filter((i)=>{
return i === "A"}).length , c2 = arr.filter((i)=>{
return i === "B"}).length , c3 = arr.filter((i)=>{
return i === "C"}).length , c4 = arr.filter((i)=>{
return i === "D"}).length ; switch(arr[6]) { case "A": return Math.min(c1,c2,c3,c4) === c3 case "B": return Math.min(c1,c2,c3,c4) === c2 case "C": return Math.min(c1,c2,c3,c4) === c1 case "D": return Math.min(c1,c2,c3,c4) === c4 default: return false; } } function a8 (){ switch(arr[7]) { case "A": return Math.abs(arr[0].charCodeAt(0) - arr[6].charCodeAt(0))>=2 case "B": return Math.abs(arr[0].charCodeAt(0) - arr[4].charCodeAt(0))>=2 case "C": return Math.abs(arr[0].charCodeAt(0) - arr[1].charCodeAt(0))>=2 case "D": return Math.abs(arr[0].charCodeAt(0) - arr[9].charCodeAt(0))>=2 default: return false; } } function a9 (){ var flag = arr[0] === arr[5], f1 = (arr[4] === arr[5]) === !flag , f2 = (arr[4] === arr[9]) === !flag , f3 = (arr[4] === arr[1]) === !flag , f4 = (arr[4] === arr[8]) === !flag ; switch(arr[8]) { case "A": return f1 && !f2 && !f3 && !f4 case "B": return !f1 && f2 && !f3 && !f4 case "C": return !f1 && !f2 && f3 && !f4 case "D": return !f1 && !f2 && !f3 && f4 default: return false; } } function a10 (){ var c1 = arr.filter((i)=>{
return i === "A"}).length , c2 = arr.filter((i)=>{
return i === "B"}).length , c3 = arr.filter((i)=>{
return i === "C"}).length , c4 = arr.filter((i)=>{
return i === "D"}).length ; switch(arr[9]) { case "A": return Math.max(c1,c2,c3,c4) - Math.min(c1,c2,c3,c4) === 3 case "B": return Math.max(c1,c2,c3,c4) - Math.min(c1,c2,c3,c4) === 2 case "C": return Math.max(c1,c2,c3,c4) - Math.min(c1,c2,c3,c4) === 4 case "D": return Math.max(c1,c2,c3,c4) - Math.min(c1,c2,c3,c4) === 1 default: return false; } } function vali () { return a1() && a2() && a3() && a4() && a5() && a6() && a7() && a8() && a9() && a10() ; } //递归遍历arr的所有排列组合 function recursion (){ if(vali()){ console.log(arr); } for(var x=0 ; x

 

转载于:https://www.cnblogs.com/zhou195/p/8573950.html

你可能感兴趣的文章
SQL Server 查询 Active Directory(1)
查看>>
红帽混合云坚持开放
查看>>
什么是linux,linux的应用与发展
查看>>
使用Sqlite Select返回满足条件的第一条与最后一条记录
查看>>
Android应用程序启动过程源代码分析(5)
查看>>
SSHv1版本的crc32漏洞
查看>>
windows phone发布时其他注意事项
查看>>
一把手的态度决定产品质量
查看>>
用Proxmox搞定gpu穿透
查看>>
18个有趣的API供你的前端开发测试之用
查看>>
从一个职校走出来的高级程序员
查看>>
案例:低迷的产品研发团队
查看>>
Hadoop系列之一:大数据存储及处理平台产生的背景
查看>>
vector容器与find算法
查看>>
《从零开始学Swift》学习笔记(Day 19)——函数参数传递
查看>>
corosync+pacemaker高可用集群
查看>>
看完就能出去神侃,来自研发第一线的“区块链”扫盲文(一)
查看>>
比较全的 POM.xml
查看>>
7.VMware View 4.6安装与部署-connection server(View Security Server)
查看>>
Hyper-V下安装Ossim系统
查看>>