您的位置:首页 > 编程语言 > Python开发

2018年刑侦推理试题解答-python

2018-03-07 15:13 519 查看
初学python,对热门的 "2018年刑侦推理试题解答"-python



最后优化的结果是 0.88秒求出答案。
B C A C A C D A B A
用时0.8816297054290771秒
                                        def v2(a2,a5):

if (a5 == 'C') and a2=='A':
return True
elif (a5 == 'D') and a2=='B':
return True
elif (a5 == 'A') and a2=='C':
return True
elif (a5 == 'B') and a2=='D':
return True
else:
return False

def v3(a,a3,a6,a2,a4):

if a=='A':
return (a3!=a6) and (a3!=a2) and (a3!=a4)
elif a=='B':
return (a6!=a3) and (a6!=a2) and (a6!=a4)
elif a=='C':
return (a2!=a3) and (a2!=a6) and (a2!=a4)
else: #'D'
return (a4!=a3) and (a4!=a6) and (a4!=a2)

def v4(a,a1,a5,a2,a7,a9,a6,a10):
if a == 'A':
return a1 == a5
elif a == 'B':
return a2 == a7
elif a == 'C':
return a1 == a9
else:# answer = 'D':
return a6 == a10

def v5(a,a8,a4,a9,a7):
if a == 'A':
return a == a8
elif a == 'B':
return a == a4
elif a == 'C':
return a == a9
else : #answer == 'D':
return a == a7

def v6(a,a8,a2,a4,a1,a6,a3,a10,a5,a9):
if a == 'A':
return a8 == a2 and a8 == a4
elif a == 'B':
return a8 == a1 and a8 == a6
elif a == 'C':
return a8 == a3 and a8 == a10
else : #answer == 'D':
return a8 == a5 and a8 == a9

def v7min(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10):
stats = [0,0,0,0]
for i in [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10]:
stats[ int(i,16)-0xA ]+=1

index = stats.index(min(stats))
return ['A','B','C','D'][index]

def v7(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10):
minA = v7min(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
if a7 == 'A':
return minA =='C'
elif a7 == 'B':
return minA == 'B'
elif a7 == 'C':
return minA == 'A'
else : #answer == 'D':
return minA == 'D'

def v8(a8,a1,a7,a5,a2,a10):
answer1 = int(a1,16)

if a8 == 'A':
return abs(int(a7,16)-answer1)!=1
elif a8 == 'B':
return abs(int(a5,16)-answer1)!=1
elif a8 == 'C':
return abs(int(a2,16)-answer1)!=1
else : #answer == 'D':
return abs(int(a10,16)-answer1)!=1

def v9(a9,a6,a5,a10,a2,a1):
if a9 == 'A':
valY = (a6 ==a5)
elif a9 == 'B':
valY = (a10 ==a5)
elif a9 == 'C':
valY = (a2 ==a5)
else : #answer == 'D':
valY = (a9 ==a5)

valX= (a1 ==a6)
return valX!=valY

def calDiff(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10):
stats = [0,0,0,0]
for i in [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10]:
stats[ int(i,16)-0xA ]+=1

maxV = max(stats)
minV = min(stats)
return maxV-minV

def v10(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10):
count = calDiff(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)

if a10 == 'A':
return count == 3
elif a10 == 'B':
return count==2
elif a10 == 'C':
return count == 4
else : #answer == 'D':
return count == 1

def verify(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10):

#skip 1 always true

#question 2
if v2(a2,a5) == False:
return False

if v3(a3,a3,a6,a2,a4) == False:
return False

if v4(a4,a1,a5,a2,a7,a9,a6,a10) == False:
return False

if v5(a5,a8,a4,a9,a7) == False:
return False

if v6(a6,a8,a2,a4,a1,a6,a3,a10,a5,a9) == False :
return False

if v7(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) == False:
return False

if v8(a8,a1,a7,a5,a2,a10) == False:
return False

if v9(a9,a6,a5,a10,a2,a1) == False:
return False

if v10(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) == False:
return False

return True

import time

time1 = time.time()

for a1 in ['A','B','C','D']:
for a2 in ['A','B','C','D']:
for a3 in ['A','B','C','D']:
for a4 in ['A','B','C','D']:
for a5 in ['A','B','C','D']:
for a6 in ['A','B','C','D']:
for a7 in ['A','B','C','D']:
for a8 in ['A','B','C','D']:
for a9 in ['A','B','C','D']:
for a10 in ['A','B','C','D']:
if verify(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) :
print(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)

time2 = time.time()

print('用时%s秒'%(time2-time1))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 2018刑侦题