最近网上很火的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. 阶段3 1.Mybatis_02.Mybatis入门案例_2.mybatis入门案例中的设计模式分析

    读取配合文件 创建工厂 最终图

  2. Linux监控命令之==>top

    一.命令说明 top 命令能够实时监控系统的运行状态,并且可以按照CPU.内存和执行时间进行排序,同时top 命令还可以通过交互式命令进行设定显示,通过top 命令可以查看即时活跃的进行. 二.参数说 ...

  3. Spring MVC的RequestContextHolder使用误区

    JShop简介:jshop是一套使用Java语言开发的B2C网店系统,致力于为个人和中小企业提供免费.好用的网店系统. 项目主页:http://git.oschina.net/dinguangx/js ...

  4. Discrete Mathematics and Its Applications | 1 CHAPTER The Foundations: Logic and Proofs | 1.2 Applications of Propositional Logic

    Translating English Sentences System Specifications Boolean Searches Logic Puzzles Logic Circuits

  5. Go语言入门篇-项目常见用法&语法

    一.导入包用法: //_表示仅执行该包下的init函数(不需要整个包导入) import _ "git.xx.xx/baases/identity/cachain/version" ...

  6. 从零构建vue项目(三)--vue常用插件

    一.直接拉取的模板中,package.json如下: { "name": "vuecli2-test", "version": " ...

  7. docker--docker仓库

    8 docker仓库 Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的地方. 8.1 docker hub 1.打开https://hub.docker.com ...

  8. 蚁群算法解决TSP问题

    代码实现 运行结果及参数展示 alpha=1beta=5 rho=0.1  alpha=1beta=1rho=0.1 alpha=0.5beta=1rho=0.1 概念蚁群算法(AG)是一种模拟蚂蚁觅 ...

  9. CVE 2019 0708 安装重启之后 可能造成 手动IP地址丢失.

    1. 最近两天发现 更新了微软的CVE 2019-0708的补丁之后 之前设置的手动ip地址会变成 自动获取, 造成ip地址丢失.. 我昨天遇到两个, 今天同事又遇到一个.微软做补丁也不走心啊..

  10. PC端微信防撤回功能分析

    1.打开PC端微信的安装目录,有一个WeChatWin.dll文件,微信的所有功能基本上都在这个文件中了 2.OD打开,搜索字符串revokemsg(撤回消息,掌握一门外语是多么的重要啊!!!),在所 ...