最近网上很火的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. tensorflow运行原理分析(源码)

    tensorflow运行原理分析(源码)  https://pan.baidu.com/s/1GJzQg0QgS93rfsqtIMURSA

  2. Flink架构和调度

    1.Flink架构 Flink系统的架构与Spark类似,是一个基于Master-Slave风格的架构,如下图所示: Flink集群启动时,会启动一个JobManager进程.至少一个TaskMana ...

  3. House_of_Force-ctf-bcloud

    2016 bctf bcloud 下载: https://pan.baidu.com/s/1e-fvhaOJKzBQMxlrweLznw 提取码:ded5 放入ida中首先定位到 main()-> ...

  4. 【HANA系列】SAP HANA Studio出现"Fetching Children..."问题

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP HANA Studio出 ...

  5. Go语言入门篇-基本类型排序和 slice 排序

    参见博客:https://blog.csdn.net/u010983881/article/details/52460998 package main import ( "sort" ...

  6. Redis-集群操作

    一.查看集群状态 1.查看集群状态 /opt/redis/src/redis-cli -h 本机IP -p redsi实例端口 -c #连接redis实例 /opt/redis/src/redis-c ...

  7. kubeadm搭建K8s集群及Pod初体验

    基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我 ...

  8. JS案例经验二

    一 关键词:鼠标事件的触发 可以在函数中指定让鼠标事件自动触发,而不是必须要鼠标滑过才触发,例如: main.onmouseover(); // 可以把该语句看做是鼠标滑过的模拟动作 main是DOM ...

  9. Kinect V2入门之数据获取步骤

    在Kinect for windows SDK2.0中,获取并处理数据源接口步骤如下: Sensor -> Source -> Reader -> Frame -> Data ...

  10. ubuntu14 文件夹添加/删除书签

    1. 打开文件管理,进入你要添加书签的目录 2. 把鼠标移到顶部选择“Bookmarks" 3. 这是文件管理左侧可以看到 4. 右键可以选择删除