Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >刑侦高考:如何用SQL解决环环相扣的刑侦推理问题

刑侦高考:如何用SQL解决环环相扣的刑侦推理问题

作者头像
数据和云
发布于 2018-07-27 06:47:39
发布于 2018-07-27 06:47:39
3820
举报
文章被收录于专栏:数据和云数据和云

高考期间看到一个朋友在朋友圈里面贴了个图,上面是2018年刑侦科推理试题,看了一下题目,这些题目都是彼此依赖,很难找到一个题目作为入手点可以进一步分析,因此可能需要用纸笔配合大量的假设和试错才能继续完成。

原题如下,大家可以先烧烧脑,再来看解决方案:

这种问题其实是SQL擅长的领域,于是一时手痒,写了一个SQL语句:

SQL> WITH T AS 2 (SELECT ASCII('A') R FROM DUAL 3 UNION ALL 4 SELECT ASCII('B') FROM DUAL 5 UNION ALL 6 SELECT ASCII('C') FROM DUAL 7 UNION ALL 8 SELECT ASCII('D') FROM DUAL), 9 RESULT AS 10 (SELECT T1.R R1, T2.R R2, T3.R R3, T4.R R4, T5.R R5, T6.R R6, T7.R R7, T8.R R8, T9.R R9, T10.R R10, 11 DECODE(T1.R, ASCII('A'), 1, 0) + DECODE(T2.R, ASCII('A'), 1, 0) + DECODE(T3.R, ASCII('A'), 1, 0) + DECODE(T4.R, ASCII('A'), 1, 0) 12 + DECODE(T5.R, ASCII('A'), 1, 0) + DECODE(T6.R, ASCII('A'), 1, 0) + DECODE(T7.R, ASCII('A'), 1, 0) 13 + DECODE(T8.R, ASCII('A'), 1, 0) + DECODE(T9.R, ASCII('A'), 1, 0) + DECODE(T10.R, ASCII('A'), 1, 0) A, 14 DECODE(T1.R, ASCII('B'), 1, 0) + DECODE(T2.R, ASCII('B'), 1, 0) + DECODE(T3.R, ASCII('B'), 1, 0) + DECODE(T4.R, ASCII('B'), 1, 0) 15 + DECODE(T5.R, ASCII('B'), 1, 0) + DECODE(T6.R, ASCII('B'), 1, 0) + DECODE(T7.R, ASCII('B'), 1, 0) 16 + DECODE(T8.R, ASCII('B'), 1, 0) + DECODE(T9.R, ASCII('B'), 1, 0) + DECODE(T10.R, ASCII('B'), 1, 0) B, 17 DECODE(T1.R, 'C', 1, 0) + DECODE(T2.R, ASCII('C'), 1, 0) + DECODE(T3.R, ASCII('C'), 1, 0) + DECODE(T4.R, ASCII('C'), 1, 0) 18 + DECODE(T5.R, ASCII('C'), 1, 0) + DECODE(T6.R, ASCII('C'), 1, 0) + DECODE(T7.R, ASCII('C'), 1, 0) 19 + DECODE(T8.R, ASCII('C'), 1, 0) + DECODE(T9.R, ASCII('C'), 1, 0) + DECODE(T10.R, ASCII('C'), 1, 0) C, 20 DECODE(T1.R, ASCII('D'), 1, 0) + DECODE(T2.R, ASCII('D'), 1, 0) + DECODE(T3.R, ASCII('D'), 1, 0) + DECODE(T4.R, ASCII('D'), 1, 0) 21 + DECODE(T5.R, ASCII('D'), 1, 0) + DECODE(T6.R, ASCII('D'), 1, 0) + DECODE(T7.R, ASCII('D'), 1, 0) 22 + DECODE(T8.R, ASCII('D'), 1, 0) + DECODE(T9.R, ASCII('D'), 1, 0) + DECODE(T10.R, ASCII('D'), 1, 0) D 23 FROM T T1, T T2, T T3, T T4, T T5, T T6, T T7, T T8, T T9, T T10 24 WHERE DECODE(CHR(T2.R), 'A', 'C', 'B', 'D', 'C', 'A', 'B') = CHR(T5.R) 25 AND (CASE CHR(T3.R) WHEN 'A' THEN LEAST(T2.R, T4.R, T6.R) - GREATEST(T2.R, T4.R, T6.R) 26 WHEN 'B' THEN LEAST(T2.R, T3.R, T4.R) - GREATEST(T2.R, T3.R, T4.R) 27 WHEN 'C' THEN LEAST(T3.R, T4.R, T6.R) - GREATEST(T3.R, T4.R, T6.R) 28 ELSE LEAST(T2.R, T3.R, T6.R) - GREATEST(T2.R, T3.R, T6.R) END) = 0 29 AND (CASE CHR(T3.R) WHEN 'A' THEN T2.R - T3.R 30 WHEN 'B' THEN T2.R - T6.R 31 WHEN 'C' THEN T3.R - T2.R 32 ELSE T2.R - T4.R END) != 0 33 AND (CASE CHR(T4.R) WHEN 'A' THEN T1.R - T5.R 34 WHEN 'B' THEN T2.R - T7.R 35 WHEN 'C' THEN T1.R - T9.R 36 ELSE T6.R - T10.R END) = 0 37 AND (CASE CHR(T5.R) WHEN 'A' THEN T8.R - ASCII('A') 38 WHEN 'B' THEN T4.R - ASCII('B') 39 WHEN 'C' THEN T9.R - ASCII('C') 40 ELSE T10.R - ASCII('D') END) = 0 41 AND (CASE CHR(T6.R) WHEN 'A' THEN LEAST(T2.R, T4.R, T8.R) - GREATEST(T2.R, T4.R, T8.R) 42 WHEN 'B' THEN LEAST(T1.R, T6.R, T8.R) - GREATEST(T1.R, T6.R, T8.R) 43 WHEN 'C' THEN LEAST(T3.R, T10.R, T8.R) - GREATEST(T3.R, T10.R, T8.R) 44 ELSE LEAST(T5.R, T9.R, T8.R) - GREATEST(T5.R, T9.R, T8.R) END) = 0 45 AND (CASE CHR(T8.R) WHEN 'A' THEN ABS(T7.R - T1.R) 46 WHEN 'B' THEN ABS(T5.R - T1.R) 47 WHEN 'C' THEN ABS(T2.R - T1.R) 48 ELSE ABS(T10.R - T1.R) END) != 1 49 AND CASE CHR(T9.R) WHEN 'A' THEN T1.R - T6.R + T5.R - T6.R ELSE 1 END != 0 50 AND CASE CHR(T9.R) WHEN 'A' THEN (T1.R - T6.R) * (T5.R - T6.R) ELSE 0 END = 0 51 AND CASE CHR(T9.R) WHEN 'B' THEN T1.R - T6.R + T5.R - T10.R ELSE 1 END != 0 52 AND CASE CHR(T9.R) WHEN 'B' THEN (T1.R - T6.R) * (T5.R - T10.R) ELSE 0 END = 0 53 AND CASE CHR(T9.R) WHEN 'C' THEN T1.R - T6.R + T5.R - T2.R ELSE 1 END != 0 54 AND CASE CHR(T9.R) WHEN 'C' THEN (T1.R - T6.R) * (T5.R - T2.R) ELSE 0 END = 0 55 AND CASE CHR(T9.R) WHEN 'D' THEN T1.R - T6.R + T5.R - T9.R ELSE 1 END != 0 56 AND CASE CHR(T9.R) WHEN 'D' THEN (T1.R - T6.R) * (T5.R - T9.R) ELSE 0 END = 0) 57 SELECT CHR(R1) R1, CHR(R2) R2, CHR(R3) R3, CHR(R4) R4, CHR(R5) R5, 58 CHR(R6) R6, CHR(R7) R7, CHR(R8) R8, CHR(R9) R9, CHR(R10) R10 59 FROM RESULT 60 WHERE (CASE CHR(R7) WHEN 'A' THEN C 61 WHEN 'B' THEN B 62 WHEN 'C' THEN A 63 ELSE D END) = LEAST(A, B, C, D) 64 AND (CASE CHR(R10) WHEN 'A' THEN 3 65 WHEN 'B' THEN 2 66 WHEN 'C' THEN 4 67 ELSE 1 END) = (GREATEST(A, B, C, D) - LEAST(A, B, C, D)); R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 ------- ------- ------- ------- ------- ------- ------- ------- ------- ------- B C A C A C D A B A

这个SQL的主要逻辑是:

通过 WITH 构造 A、B、C、D 四个选项; 把十道题的所有选项可能性穷举生成; 按照题意通过 WHERE 语句来进行条件限制; 第三题和第九题都是一道题对应一个 WHERE 语句; 第七题和第十题无法在第一层查询中获取,需要在第二层中过滤。

虽然用了一点技巧,但是总的来说SQL的逻辑比较清楚,欢迎大家探讨不同解并投稿给我们。

同类文章回顾:

用SQL解析神奇的扑克牌魔术 用SQL解海盗分金的利益最大化问题 无所不能用SQL挑战经典游戏汉诺塔 SQL竟然可以解脑筋急转弯的题目

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
嵌入式ARM设计编程(二) 字符串拷贝
通过实验掌握使用 LDB/STB,b等指令完成较为复杂的存储区访问和程序分支,学习使用条件码
timerring
2023/02/16
4900
解题思路 | 6小时极速闯关,脑洞一定要大开开开开开
(原赛题直达车:一道即将尘封十几年的封印,不来尝试解开吗?) 本次解题报告由微信算法大神yueqi提供。在腾讯内部赛道中,来自微信的yueqi同学在赛题发布6小时后即破解封印、完成闯关,成为内部赛首届冠军。解题思路千万条,脑洞大开第一条,也欢迎小伙伴们在文末留言分享自己的解题报告链接!
腾讯极客挑战赛
2021/06/16
1K0
解题思路 | 6小时极速闯关,脑洞一定要大开开开开开
【愚公系列】2023年06月 攻防世界-Web(Triangle)
Unicorn是一个基于Ruby语言编写的Web服务器,它采用了多进程和多线程的方式来提高并发性能。
愚公搬代码
2025/05/28
660
【愚公系列】2023年06月 攻防世界-Web(Triangle)
mit6.824 lab4_mit6.830
A:0、1、2、3、0xc B:0x2000、0xEDEDEDED、0xFEDEDEDE、0x2004、110000 00000 11111 0010 0000 0000 0000(0xc01f2000) C:0x87654321、1、0x87654320、0x14、011101 11111 00001 0000 0000 0000 0010(0x77e10002) D:17、0、32、no instructions need to be changed E:4、110000 00000 00000 0000 0000 0000 0000(0xC0000000)
全栈程序员站长
2022/11/19
2970
App防Bot新版AliTigerTally方案浅析与算法还原1
对旧版产品本感兴趣的可以移步到这里:https://mp.weixin.qq.com/s/S6BpQYWsYhufh9DsnbXPsA
我是小三
2021/12/29
3K3
App防Bot新版AliTigerTally方案浅析与算法还原1
某地理位置模拟APP从壳流程分析到破解
在我们拿到一个APP准备破解时一般得安装运行,程序运行后须要注册用户,随便注册一个用户登录,以下是APP须要购买vip才能使用的大概情况。
我是小三
2018/08/08
1.4K0
某地理位置模拟APP从壳流程分析到破解
XX高校校园网网络规划与设计_职业生涯规划word文档
Vlan功能简介: 通过vlan划分网段,隔离广播域 **链路聚合简介:**捆绑端口,实现带宽翻倍 HSRP功能简介: 设置共同的虚拟网关,优先级,冗余链路,当主干链路出故障时能自动启动备份链路 MSTP功能简介: 通过设计优先级来阻塞端口,可以解决交换机环路问题,减少数据包在网络循环的兜圈子 静态路由功能简介: 因为公网路由路由器器很多,如果边界配置动态路由,则边界路由器学习的路由记录就很多,会很占路由器内存及查找效率。所以只能采用默认路由 **动态路由简介RIP:**公网有很多路由器采用人工分配的工作量大,所以采用RIP协议 DHCP功能简介: 学习的主机很多,人工分配ip的工作量大,所以采用DHCP服务自动获取 NAT功能简介: 学校局域网用的都是私有地址,私有地址是不能访问公网地址的,需要把私有地址转换翻译成公网地址才能访问公网 Ipsec功能简介: 学校局域网是私有的,互联网用户是不能访问的。所以要配置VPN加密通道 GRE功能简介: 各校区园区的局域网是独立的,要实现各校区互通,要配置GER隧道,忽略公网路由器,直接看成一条网线连接园区边界路由器。
全栈程序员站长
2022/11/08
1.2K0
XX高校校园网网络规划与设计_职业生涯规划word文档
第3阶段——内核启动分析之创建si工程和分析stext启动内核函数(4)
目标: (1)创建Source Insight 工程,方便后面分析如何启动内核的 (2)分析uboot传递参数,链接脚本如何进入stext的  (3) 分析stext函数如何启动内核:  (3.1
诺谦
2018/01/03
1K0
第3阶段——内核启动分析之创建si工程和分析stext启动内核函数(4)
360 so动态脱壳
目前so加壳有很多家,我己知的有 爱加密,梆梆,360, 娜迦等 各有所长。今天把学习360的脱壳笔记记录下来与小菜共同学习,没有其它目的,大神请绕道!
我是小三
2018/08/08
1.4K0
360 so动态脱壳
UCOSII系统移植详解「建议收藏」
1,处理器的C编译器能产生可重入型的代码,如果不行的话,那么就不能在任务之间随意的切换,因为当你切换到别的任务的时候,该任务在这个函数的数据就会被破坏。
全栈程序员站长
2022/08/19
2.4K0
六、python学习笔记-模块-正则模块(二)
正常模块常用使用实例 # 引入模块 import re # 完全匹配 # 完全匹配没有必要使用正则,可以直接使用字符串方法 r1 = re.findall('abc', 'agduyjgasjaljklaabcsdc') print(r1) # 模糊匹配 # 通配符‘.’:代指任意一个字符(除了换行符),一个‘.’只能匹配一位。 r2 = re.findall('a.c', 'agduyjgasjaljklaabcsdc') print(r2) # ‘^’:以指定字符开头。 r3 = re.finda
堕落飞鸟
2022/01/13
3220
某手游智能反外挂产品原理浅析
作者: 我是小三 博客: http://www.cnblogs.com/2014asm/ 由于时间和水平有限,本文会存在诸多不足,希望得到您的及时反馈与指正,多谢!
我是小三
2019/08/09
2.1K0
某手游智能反外挂产品原理浅析
OpenHarmony 内核源码分析 (内核启动篇) | 从汇编到 main ()
这应该是系列篇最难写的一篇,全是汇编代码,需大量的底层知识,涉及协处理器,内核镜像重定位,创建内核映射表,初始化 CPU 模式栈,热启动,到最后熟悉的 main() 。
小帅聊鸿蒙
2025/04/07
1830
OpenHarmony 内核源码分析 (内核启动篇) | 从汇编到 main ()
ARM汇编简单学习
ARM汇编语言是针对ARM架构设计的低级编程语言,用于直接操作硬件和编写高效的系统级程序。
cultureSun
2024/03/28
1950
新特性解读 | 数组范围遍历功能
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
爱可生开源社区
2020/10/22
5900
nProtect APPGuard安卓反外挂分析
1.最近在学习手游保护方面的技术,本文是学习过程中分析某反外挂的一点记录,高手莫要见笑,有不对的地方还请指教,首先简单通过资源目录中文件名做基本了解,
我是小三
2018/08/08
4.6K0
nProtect APPGuard安卓反外挂分析
S3C2440移植uboot之启动过程概述
  打开uboot.lds,发现链接地址为0,所以新的uboot只能在nor flash运行。运行开始文件为start.o。
嵌入式与Linux那些事
2021/05/20
4960
S3C2440移植uboot之启动过程概述
深入分析Go1.17函数调用栈参数传递
了解到 C 语言的函数调用,6个以内的参数通过寄存器传递,6个以外的在栈上传递。网上多篇Go的函数调用分析文章,说Go的函数调用时参数都是通过栈传递,自己通过实际运行Go1.17版本函数调用的汇编代码发现,Go的函数调用时参数是通过寄存器传递。对于这点有些好奇,专门写篇文章分析下。
涂明光
2022/09/28
1.8K0
06.内核启动流程分析之内核启动
内核最终目的:运行根文件系统的应用程序 内核做的事情: 处理uboot传入的参数 arch\arm\kernel /*启动内核:bi_arch_number机器ID。参数存放的地址 bd->bi_boot_params*/ theKernel (0, bd->bi_arch_number, bd->bi_boot_params); 判断是否支持单板(根据启动内核时传入的机器ID) /**/ ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MOD
嵌入式与Linux那些事
2021/05/20
9260
嵌入式:Load/Store之单寄存器的存取指令
ARM处理器是Load/Store型的,即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存储器中,以加快对片外存储器进行数据处理的速度。
timerring
2022/12/22
8460
嵌入式:Load/Store之单寄存器的存取指令
相关推荐
嵌入式ARM设计编程(二) 字符串拷贝
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档