【python】对于程序员来说,2018刑侦科推理试卷是问题么?
最近网上很火的2018刑侦科推理试卷,题目确实很考验人逻辑思维能力。

可是对于程序员来说,这根本不是问题。写个程序用穷举法计算一遍即可,太简单。
import itertools
class Solution(object):
answer = []
def check3(self):
if self.answer[3-1] == 'A':
return (self.answer[6-1] == self.answer[2-1] == self.answer[4-1]) and (self.answer[6-1]!= self.answer[3-1])
if self.answer[3-1] == 'B':
return (self.answer[3-1] == self.answer[2-1] == self.answer[4-1]) and (self.answer[3-1]!= self.answer[6-1])
if self.answer[3-1] == 'C':
return (self.answer[6-1] == self.answer[3-1] == self.answer[4-1]) and (self.answer[6-1]!= self.answer[2-1])
if self.answer[3-1] == 'D':
return (self.answer[6-1] == self.answer[2-1] == self.answer[3-1]) and (self.answer[6-1]!= self.answer[4-1])
def check4(self):
if self.answer[4-1] == 'A':
return (self.answer[1-1] == self.answer[5-1])
if self.answer[4-1] == 'B':
return (self.answer[2-1] == self.answer[7-1])
if self.answer[4-1] == 'C':
return (self.answer[1-1] == self.answer[9-1])
if self.answer[4-1] == 'D':
return (self.answer[6-1] == self.answer[10-1])
def check5(self):
if self.answer[5-1] == 'A':
return (self.answer[8-1] == self.answer[5-1])
if self.answer[5-1] == 'B':
return (self.answer[4-1] == self.answer[5-1])
if self.answer[5-1] == 'C':
return (self.answer[9-1] == self.answer[5-1])
if self.answer[5-1] == 'D':
return (self.answer[7-1] == self.answer[5-1])
def check6(self):
if self.answer[6-1] == 'A':
return (self.answer[2-1] == self.answer[4-1] == self.answer[8-1])
if self.answer[6-1] == 'B':
return (self.answer[1-1] == self.answer[6-1] == self.answer[8-1])
if self.answer[6-1] == 'C':
return (self.answer[3-1] == self.answer[10-1] == self.answer[8-1])
if self.answer[6-1] == 'D':
return (self.answer[5-1] == self.answer[9-1] == self.answer[8-1])
def check7(self):
aCount = self.answer.count('A')
bCount = self.answer.count('B')
cCount = self.answer.count('C')
dCount = self.answer.count('D')
if self.answer[7 - 1] == 'A':
return cCount < aCount and cCount < bCount and cCount < dCount
if self.answer[7 - 1] == 'B':
return bCount < aCount and bCount < cCount and bCount < dCount
if self.answer[7 - 1] == 'C':
return aCount < bCount and aCount < cCount and aCount < dCount
if self.answer[7 - 1] == 'D':
return dCount < aCount and dCount < bCount and dCount < cCount
def check8(self):
if self.answer[8-1] == 'A':
return abs(ord(self.answer[7-1]) - ord(self.answer[1-1])) > 1
if self.answer[8-1] == 'B':
return abs(ord(self.answer[5-1]) - ord(self.answer[1-1])) > 1
if self.answer[8-1] == 'C':
return abs(ord(self.answer[2-1]) - ord(self.answer[1-1])) > 1
if self.answer[8-1] == 'D':
return abs(ord(self.answer[10-1]) - ord(self.answer[1-1])) > 1
def check9(self):
con1 = (self.answer[1-1] == self.answer[6-1])
con2 = False
if self.answer[9 - 1] == 'A':
con2 = (self.answer[6-1] == self.answer[5-1])
if self.answer[9 - 1] == 'B':
con2 = (self.answer[10-1] == self.answer[5-1])
if self.answer[9 - 1] == 'C':
con2 = (self.answer[2-1] == self.answer[5-1])
if self.answer[9 - 1] == 'D':
con2 = (self.answer[9-1] == self.answer[5-1])
return con1 != con2
def check10(self):
aCount = self.answer.count('A')
bCount = self.answer.count('B')
cCount = self.answer.count('C')
dCount = self.answer.count('D')
maxV = aCount
minV = aCount
for i in [aCount,bCount,cCount,dCount]:
if maxV < i:
maxV = i
if minV > i:
minV = i
if self.answer[10 - 1] == 'A':
return (maxV - minV) == 3
if self.answer[10 - 1] == 'B':
return (maxV - minV) == 2
if self.answer[10 - 1] == 'C':
return (maxV - minV) == 4
if self.answer[10 - 1] == 'D':
return (maxV - minV) == 1
def check(self):
ret = True
ret = self.check3()
if ret == False:
return False
ret = self.check4()
if ret == False:
return False
ret = self.check5()
if ret == False:
return False
ret = self.check6()
if ret == False:
return False
ret = self.check7()
if ret == False:
return False
ret = self.check8()
if ret == False:
return False
ret = self.check9()
if ret == False:
return False
ret = self.check10()
if ret == False:
return False
return ret
def calc(self):
option = ['A','B','C','D']
for x in itertools.product(*[option] * 10):
self.answer = list(''.join(x))
if self.check() == True:
print self.answer s = Solution()
s.calc()
最终输出答案是: ['B', 'C', 'A', 'C', 'A', 'C', 'D', 'A', 'B', 'A']
【python】对于程序员来说,2018刑侦科推理试卷是问题么?的更多相关文章
- python的约束库constraint解决《2018刑侦科题目》
Github地址:https://github.com/ZJW9633/hello-word/blob/master/Xingzhenke 题目分析: 10道题互相关联,耦合性强,暴力求解需4^10种 ...
- 一:对程序员来说CPU是什么?
0.开篇 (1)程序是什么? 指示计算机每一步动作的一组指令 (2)程序是由什么组成的? 指令和数据 (3)什么是机器语言? ...
- Python/Java程序员面试必备常用问题解析与答案
转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...
- 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘
笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln 怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...
- Python超级程序员使用的开发工具
我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发? 你将来的计划是什么? 有什么给Py ...
- 大一C语言学习笔记(3)---对于程序员来说,学历和能力,到底哪个重要?
在高考失利后,我合理地萎靡一段时间,振作起来之后选择了我憧憬了10年的计算机专业---软件工程.但由于分数受限,也是选择了二本普通院校黑科技(我当然爱她,我的母校),而因为学历上的自卑,让我有了想考研 ...
- (第一章)对程序员来说CPU是什么
这几天,看到一本书,<程序是怎么跑起来的>,觉得之前都没有完整的看完一本书,现在要从这本书开始,慢慢的培养自己写读书笔记的习惯,不能度过去就忘了. 学习是一个螺旋上升的过程,不要指望一下子 ...
- 8个对程序员来说有用的jQuery小贴士和技巧
1) 禁用鼠标右键单击 jQuery程序员可以使用此代码在网页上禁用鼠标右键点击. 1 2 3 4 5 6 7 8 9 10 $(document).ready(function() { // ...
- 《程序是怎样跑起来的》读书笔记——第一章 对程序员来说CPU是什么
1 程序的运行流程 2 CPU的组成 3 寄存器的主要种类和功能 "程序计数器"--决定程序流程的 4 条件分支和循环机制 4.1 顺序执行 4.2 选择分支 5 函数的调用机制 ...
随机推荐
- 看看 Delphi XE2 为 VCL 提供的 14 种样式
看看 Delphi XE2 为 VCL 提供的 14 种样式 其实只提供了 13 个 vsf 样式文件, 还有默认的 Windows 样式, 共 14 种. 在空白窗体上添加 ListBox1 等控件 ...
- Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo
Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如: Memo1.UseSma ...
- 中国MOOC_零基础学Java语言_第6周 使用对象_1单词长度
第6周编程题 查看帮助 返回 第6周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...
- C# 文件打开对话框 图片fitter
"All Image Files|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff|""Windows Bitmap(* ...
- VBA文件操作
做这些东西主要是为了,实现,我们的最终目标. 查到 两个大表里面的变化数据. 所以 这次 ①实现了 文件操作的一部分内容. 包括,excel的打开.分四个步骤. 1.路径 2.打开工作博 3.操作 4 ...
- expect替人进行交互
expect是一门独立于shell的语言 用expect 执行写好的脚本 #!/usr/bin/expectspawn ssh root@192.168.40.67 (spawn 是expect ...
- golang网络编程高并发
1 golang写服务器不需要epoll吗 golang写服务器不需要在用reactor模式的epoll了,因为golang的协程非常廉价,可以并发开启成千上完个协程. 一个协程占用内存大概2KB左右 ...
- Widget代码讲解
参考:https://zhuanlan.zhihu.com/p/28225011 QT版本为5.12.4 1.main.cpp #include "widget.h" #inclu ...
- go & Windows Service
相关库 https://godoc.org/golang.org/x/sys/windows/svc https://github.com/kardianos/service https://gith ...
- 禁止input输入框历史记录
<input type="text" autocomplete="off" />