最近网上很火的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刑侦科推理试卷是问题么?的更多相关文章

  1. python的约束库constraint解决《2018刑侦科题目》

    Github地址:https://github.com/ZJW9633/hello-word/blob/master/Xingzhenke 题目分析: 10道题互相关联,耦合性强,暴力求解需4^10种 ...

  2. 一:对程序员来说CPU是什么?

    0.开篇    (1)程序是什么?          指示计算机每一步动作的一组指令     (2)程序是由什么组成的?          指令和数据     (3)什么是机器语言?         ...

  3. Python/Java程序员面试必备常用问题解析与答案

    转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...

  4. 笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘

    笨办法学python - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:xaln  怎样阅读本书 由于本书结构独特,你必须在学习时遵守几条规则 录入所有代码,禁止复制粘贴 一字不差地录入代码 ...

  5. Python超级程序员使用的开发工具

    我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发? 你将来的计划是什么? 有什么给Py ...

  6. 大一C语言学习笔记(3)---对于程序员来说,学历和能力,到底哪个重要?

    在高考失利后,我合理地萎靡一段时间,振作起来之后选择了我憧憬了10年的计算机专业---软件工程.但由于分数受限,也是选择了二本普通院校黑科技(我当然爱她,我的母校),而因为学历上的自卑,让我有了想考研 ...

  7. (第一章)对程序员来说CPU是什么

    这几天,看到一本书,<程序是怎么跑起来的>,觉得之前都没有完整的看完一本书,现在要从这本书开始,慢慢的培养自己写读书笔记的习惯,不能度过去就忘了. 学习是一个螺旋上升的过程,不要指望一下子 ...

  8. 8个对程序员来说有用的jQuery小贴士和技巧

    1) 禁用鼠标右键单击 jQuery程序员可以使用此代码在网页上禁用鼠标右键点击. 1 2 3 4 5 6 7 8 9 10 $(document).ready(function() {     // ...

  9. 《程序是怎样跑起来的》读书笔记——第一章 对程序员来说CPU是什么

    1 程序的运行流程 2 CPU的组成 3 寄存器的主要种类和功能 "程序计数器"--决定程序流程的 4 条件分支和循环机制 4.1 顺序执行 4.2 选择分支 5 函数的调用机制 ...

随机推荐

  1. 看看 Delphi XE2 为 VCL 提供的 14 种样式

    看看 Delphi XE2 为 VCL 提供的 14 种样式 其实只提供了 13 个 vsf 样式文件, 还有默认的 Windows 样式, 共 14 种. 在空白窗体上添加 ListBox1 等控件 ...

  2. Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo

    Delphi XE2 之 FireMonkey 入门(40) - 控件基础: TMemo 值得注意的变化: 1.其父类 TScrollBox 的许多特性也很有用处, 如:   Memo1.UseSma ...

  3. 中国MOOC_零基础学Java语言_第6周 使用对象_1单词长度

    第6周编程题 查看帮助 返回   第6周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...

  4. C# 文件打开对话框 图片fitter

    "All Image Files|*.bmp;*.ico;*.gif;*.jpeg;*.jpg;*.png;*.tif;*.tiff|""Windows Bitmap(* ...

  5. VBA文件操作

    做这些东西主要是为了,实现,我们的最终目标. 查到 两个大表里面的变化数据. 所以 这次 ①实现了 文件操作的一部分内容. 包括,excel的打开.分四个步骤. 1.路径 2.打开工作博 3.操作 4 ...

  6. expect替人进行交互

    expect是一门独立于shell的语言 用expect 执行写好的脚本 #!/usr/bin/expectspawn ssh root@192.168.40.67  (spawn  是expect ...

  7. golang网络编程高并发

    1 golang写服务器不需要epoll吗 golang写服务器不需要在用reactor模式的epoll了,因为golang的协程非常廉价,可以并发开启成千上完个协程. 一个协程占用内存大概2KB左右 ...

  8. Widget代码讲解

    参考:https://zhuanlan.zhihu.com/p/28225011 QT版本为5.12.4 1.main.cpp #include "widget.h" #inclu ...

  9. go & Windows Service

    相关库 https://godoc.org/golang.org/x/sys/windows/svc https://github.com/kardianos/service https://gith ...

  10. 禁止input输入框历史记录

    <input type="text" autocomplete="off" />