前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python系列之六——拿什么拯救你?我的大脑

Python系列之六——拿什么拯救你?我的大脑

作者头像
小小詹同学
发布2018-04-13 17:02:13
7220
发布2018-04-13 17:02:13
举报
文章被收录于专栏:小詹同学小詹同学

我一定是智障了,话不多说,上图上图~

就是这样10个选择题,你没有看错,我一定是个智障了~佩服不用穷举,也不用参考网上的大神思路,就能解出十道题的你!詹小白一开始想着把所有的题目翻译成规律,然后依次去推算,就像下面这样,结果发现脑子果然不够用了~

那就老老实实的穷举试试看吧,也就4的10次方(2的20次方,1048576种可能)而已嘛~这点计算量还是有的,嗯,我是说电脑……

各位老司机看一看,这是Python版写的~

代码语言:javascript
复制
 1#encoding=utf-8
 2#anser表示结果
 3#select表示每题中涉及的其他相关题目
 4anser_all = 0;    #所有可能的结果,一共4的10次方,也就是2的20次方 pow(2,20)
 5anser = [0,0,0,0,0,0,0,0,0,0];    #十道题的答案
 6while anser_all < pow(2,20):
 7   for i in range(10):
 8       anser[i] = ((anser_all >> (2*i)) & 0x03);
 9   anser_all = anser_all + 1;    #因为是从0开始,对应1234或者说ABCD
10   #题目2
11   select = [2,3,0,1]
12   if select[anser[1]] != anser[4]:
13       continue
14   #题目3
15   flag = 0;
16   select = [2,5,1,3]
17   for i in select:
18       if (anser[i] == anser[select[anser[2]]]) & (i != select[anser[2]]):
19           flag = 1;
20           break;
21   if flag == 1:
22       continue
23   #题目4
24   select = [[0,4],[1,6],[0,8],[5,9]]
25   if anser[select[anser[3]][0]] != anser[select[anser[3]][1]]:
26       continue
27   #题目5
28   select = [7,3,8,6]
29   if anser[select[anser[4]]] != anser[4]:
30       continue
31   #题目6
32   select = [[1,3],[0,5],[2,9],[4,8]]
33   if (anser[select[anser[5]][0]] != anser[7]) | (anser[select[anser[5]][1]] != anser[7]):
34       continue
35   #题目7
36   select = [2,1,0,3]
37   count = [anser.count(0),anser.count(1),anser.count(2),anser.count(3)]
38   if select[anser[6]] != count.index(min(count)):
39       continue
40   #题目8
41   select = [6,4,1,9]
42   if (anser[select[anser[7]]] == (anser[0]+1)) | (anser[select[anser[7]]] == (anser[0]-1)):
43       continue
44   #题目9
45   select = [5,9,1,8]
46   if anser[0] == anser[5]:
47       if anser[select[anser[8]]] == anser[4]:
48           continue
49   else:
50       if anser[select[anser[8]]] != anser[4]:
51           continue
52   #题目10
53   select = [3,2,4,1]
54   if select[anser[9]] != (max(count) - min(count)):
55       continue
56#显示最后结果
57   j=1
58   for i in anser:
59       print (str(j) + chr(ord('A')+i))
60       j = j + 1

运行起来也是没有问题的,一个简单的穷举而已~

代码语言:javascript
复制
> 1 2 3 4 5 6 7 8 9 10
> B C A C A C D A B A

RAN ER ,一个大写的然而!!之后不服气啊,然后去知乎一顿逛,发现某些大神是真的牛bi,划重点!!!评价这只是小学生阅读题,没难度~然而人家真的有资本这么说~

看下边重点~

确定条件1:从第三题可以得出,2、3、4、6题里面,有3题的答案是相同的。

确定条件2:从第10题可以得出,本试卷答案最多的字母,数字也不会超过5,且本试卷答案最少的字母,肯定小于2(为1或者0)

1、若3选A,仍旧不能确定246的选项,获得的信息很少;那我们不妨先换下一个假设;

2、若3选B,则234都选B,由2知5选D,由5知7选D,而第7题选D,与已知条件2相悖,错;

3、若3选C,则346都选C,由6知3、4、6、8、10都选C,则已经有5题选C,其他题目不能选C。此时看第五题,直接排除ABC选项,但如果选D,则第七题与条件2相悖。错;

4、若3选D,则236选D,由2知5选B,则4选B,由4知27相同,则7选D,与条件2相悖,错;

所以,第三题选A......所以刚才就不该绕的……下面246选项相同,继续套:

①若246为B,则5为D,7为D,与条件2相悖,错;

②若246选C,由2知5为A,由6知3、8、10均为A,只剩1、7、9未定。现在第八题:已知第八题为A,反过来说,第2、5、10均与第一题答案相邻。2选C,5选A,与AC相邻的,只有B了。则1、9为B,7选D,完美印证所有题干。

所以最终答案为:BCACACDABA

虽然有一定的运气成分,但是关键在于阅读抓取重要关键信息,这点是没错的~相信这也是我们警察叔叔考试时看重的能力吧~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小詹同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档