2018年刑侦科推理试题 python实现

这题越推越觉得应该用程序写,所以就用python写了一个,为什么用python,因为真的很方便。

先看看理论上是否可行,10道题,每题4个选项,也就是4的10次幂,2的20次幂,也就是20bit,2.5Byte的数据要遍历,这个数量级一般计算机妥妥够用,4Byte以内通常都可以,要是20题就是5Byte就比较吃力了,6Byte就要几周时间了,8Byte就别想了,当然是遍历完,要是在前面就出结果了例外。

下面是python源码:

ask_all = 0;

ask = [0,0,0,0,0,0,0,0,0,0];

while ask_all < 2**20:

for i in range(10):

ask[i] = ((ask_all >> (2*i)) & 0x03);

ask_all = ask_all + 1;

#ASK2

select = [2,3,0,1]

if select[ask[1]] != ask[4]:

continue

#ASK3

flag = 0;

select = [2,5,1,3]

for i in select:

if (ask[i] == ask[select[ask[2]]]) & (i != select[ask[2]]):

flag = 1;

break;

if flag == 1:

continue

#ASK4

select = [[0,4],[1,6],[0,8],[5,9]]

if ask[select[ask[3]][0]] != ask[select[ask[3]][1]]:

continue

#ASK5

select = [7,3,8,6]

if ask[select[ask[4]]] != ask[4]:

continue

#ASK6

select = [[1,3],[0,5],[2,9],[4,8]]

if (ask[select[ask[5]][0]] != ask[7]) | (ask[select[ask[5]][1]] != ask[7]):

continue

#ASK7

select = [2,1,0,3]

count = [ask.count(0),ask.count(1),ask.count(2),ask.count(3)]

if select[ask[6]] != count.index(min(count)):

continue

#ASK8

select = [6,4,1,9]

if (ask[select[ask[7]]] == (ask[0]+1)) | (ask[select[ask[7]]] == (ask[0]-1)):

continue

#ASK9

select = [5,9,1,8]

if ask[0] == ask[5]:

if ask[select[ask[8]]] == ask[4]:

continue

else:

if ask[select[ask[8]]] != ask[4]:

continue

#ASK10

select = [3,2,4,1]

if select[ask[9]] != (max(count) - min(count)):

continue

for i in range(10):

print i+1,

print(‘‘);

for i in ask:

print chr(ord(‘A‘)+i),

结果:

原文地址:https://www.cnblogs.com/dracowangs/p/8495878.html

时间: 2024-10-18 03:48:43

2018年刑侦科推理试题 python实现的相关文章

2018年刑侦科推理试题(C++)

上学期看到2018年刑侦科推理试题,直觉告诉我可以嵌套N层for循环来解答,但后面还是用组合算法穷举出所有组合算到答案,嵌套太深不好搞啊. 从 0b00000000000000000000 自增到 0b11111111111111111111,每2bit表示一道题的答案,即: 0b00为A,0b01为B,0b10为C,0b11为D, 利用位移操作从左边高位依次读取每2bit的数,判断后不符合题意的组合就扔掉,最终肯定有一个组合答案符合. 下面我自己的解法 // // Created by sys

乱七八糟:刑侦科推理试题

昨晚观察者网站登出了一个贴子这套刑侦科推理试题,什么水平?,一时转发无数.试题中的第一道,猛一看不知所以然,再往下看看发现是逻辑推理.推导了一下,还挺有意思的,想起了上数理逻辑课的日子. 原文地址:https://www.cnblogs.com/pandabang/p/8494521.html

2018年老男孩最新全栈python第8期全套视频教程(6个月)陆续更新完!

2018年老男孩最新全栈python第8期视频教程(6个月)陆续更新完! 1.png (78.13 KB, 下载次数: 0) 下载附件 半小时前 上传 视频日期:   老男孩教育Python高级全栈开发工程师 课程内容: 第一阶段: linux基础以及常用服务学习(2周) 计算机组成原理 linux前世今生 linux介绍以及特点 Unix的历史介绍 自由软件以及基金会 GUN.GPL核心 linux的三大企业应用领域介绍 linux的各种开发性版本以及区别 linux的环境搭建 CentOs安

2018行政科推理试题

最近很火的刑侦推理题,我也试了一下,答案是BCACA CDABA 如果直接推理很难,还要不断试错.既然这样不如借助计算机暴力出结果(因为只有4^9=262144种情况,可以无脑秒出).具体做法是 首先生成所有可能的答案(递归生成解答树) 筛选掉不符合10个题目要求的(剪枝,剪枝顺序还可以优化) 剩下唯一一个就是答案 附上源代码: #include <algorithm> #include <iostream> #define pass char answers[10]; // Au

隐马尔科夫模型python实现简单拼音输入法

在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客,无奈大神没给可以运行的代码,只能纯手动网上找到了结巴分词的词库,根据此训练得出隐马尔科夫模型,用维特比算法实现了一个简单的拼音输入法.githuh地址:https://github.com/LiuRoy/Pinyin_Demo 原理简介 隐马尔科夫模型 抄一段网上的定义: 隐马尔可夫模型 (Hidden Markov Model) 是一种统计模型,用来描述一个含有隐含

2018年网易Java笔试题

OOP三特性 封装: 继承: 多态: Java中如何实现多继承 实现多个接口 使用内部类 Java对象生成过程 4.HashTable和HashMap的区别 ü  历史原因:Hashtable是基于陈旧的Dictionary类实现的,HashMap是Java 1.2引进的一个Map接口的一个实现 ü  同步性:Hashtable是同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的,而HashMap则是异步的,因此HashMap中的对象并不是线程安全的,因为同步的要求会影响执行

2018 Java线程热门面试题,你知道多少?

面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:"面试官为什么会这样问?他希望听到什么答案?"然后针对性的准备和回答就行了,无他. 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发

2018年大数据面试题总结

目前面试了多家大数据开发工程师,成长了很多,也知道了很多知识,下面和大家分享一下我遇到的面试题和答案. 1.kafka集群的规模,消费速度是多少. 答:一般中小型公司是10个节点,每秒20M左右. 2.hdfs上传文件的流程. 答:这里描述的 是一个256M的文件上传过程 ① 由客户端 向 NameNode节点节点 发出请求 ②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循机架感应原则 ③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一

2018年6月21号 Python入门课程学习心得

感谢alex老师精心准备的课程内容和精美的PPT,总结一下 第一课主要内容是: 1. 学Python来干嘛? 2. 学完之后想做什么? 3. Python主要应用在哪些领域,我感觉Python比较牛的就是在人工智能和数据处理方面,通过老师的分享Python语言是适用于很多领域的 4. 随着人工智能技术的发展很多重复性的工作都将会被取代,我们唯一能做的就是先人一步,使自己走在快速变革时代前列 5. 通过学习英语的事例和数据告诉我们,学习方法的重要性,一套好的学习方法应包含三个方面(输入-输出---