撞钟和尚cokeor

暴力解2018刑侦题python版

 

  

 1 # 1-->a   2-->b 3-->c 4-->d   a[1]-->question1
 2 
 3 a=[None]*11                                                       #11是为了下标方便些,要不逻辑描述的时候容易出错
 4 sum=[None]*4                                                      
 5 
 6 for i in range(4**10):                                            #定义循环次数
 7     for j in range(1,11):                                         #定义每个问题的答案
 8         a[j]=int(i%(4**j)/(4**(j-1)))+1
 9     for k in range(4):                                            #计算每个选项的个数
10         sum[k]=a.count(k+1)
11                                                                   #开始逻辑运算
12     if(
13             (a[2]==1 and a[5]==3 or
14              a[2]==2 and a[5]==4 or
15              a[2]==3 and a[5]==1 or
16              a[2]==4 and a[5]==2)                       
17         and (a[3]==1 and a[3]!=a[6] and a[3]!=a[2] and a[3]!=a[4] or
18              a[3]==2 and a[6]!=a[3] and a[6]!=a[2] and a[6]!=a[4] or
19              a[3]==3 and a[2]!=a[3] and a[2]!=a[6] and a[2]!=a[4] or
20              a[3]==4 and a[4]!=a[3] and a[4]!=a[6] and a[4]!=a[2])
21         and (a[4]==1 and a[1]==a[5] and a[2]!=a[7] and a[1]!=a[9] and a[6]!=a[10] or
22              a[4]==2 and a[2]==a[7] and a[1]!=a[5] and a[1]!=a[9] and a[6]!=a[10] or
23              a[4]==3 and a[1]==a[9] and a[1]!=a[5] and a[2]!=a[7] and a[6]!=a[10] or
24              a[4]==4 and a[6]==a[10] and a[1]!=a[5] and a[1]!=a[9] and a[2]!=a[7])
25         and (a[5]==1 and a[8]==1 or
26              a[5]==2 and a[4]==2 or
27              a[5]==3 and a[9]==3 or
28              a[5]==4 and a[7]==4)
29         and (a[6]==1 and a[8]==a[4] and a[8]==a[2] or
30              a[6]==2 and a[8]==a[1] and a[8]==a[6] or
31              a[6]==3 and a[8]==a[3] and a[8]==a[10] or
32              a[6]==4 and a[8]==a[5] and a[8]==a[9])
33         and (a[7]==1 and sum.index(min(sum))+1==3 or
34              a[7]==2 and sum.index(min(sum))+1==2 or
35              a[7]==3 and sum.index(min(sum))+1==1 or
36              a[7]==4 and sum.index(min(sum))+1==4)
37         and (a[8]==1 and abs(a[7]-a[1])!=1 or
38              a[8]==2 and abs(a[5]-a[1])!=1 or
39              a[8]==3 and abs(a[2]-a[1])!=1 or
40              a[8]==4 and abs(a[10]-a[1])!=1)
41         and (a[9]==1 and (a[1]==a[6])!=(a[6]==a[5]) or
42              a[9]==2 and (a[1]==a[6])!=(a[10]==a[5]) or
43              a[9]==3 and (a[1]==a[6])!=(a[2]==a[5]) or
44              a[9]==2 and (a[1]==a[6])!=(a[9]==a[5]))
45         and (a[10]==1 and max(sum)-min(sum)==3 or
46              a[10]==2 and max(sum)-min(sum)==2 or
47              a[10]==3 and max(sum)-min(sum)==4 or
48              a[10]==4 and max(sum)-min(sum)==1)
49         
50         ):
51         for i in a[1:]:
52             print(chr(ord('a')+i-1),end='')
53         print('\n')

 

 

posted on 2018-03-08 13:13  撞钟和尚cokeor  阅读(208)  评论(0编辑  收藏  举报