python-网红题2018刑侦科推理测试题
题目
图片:

网红题 吓退了一大批原本还对刑侦专业跃跃欲试的各路英雄好汉。
解题思路
- 生成数组,ABCD替换为1234(本次比较暴力,未做优化)
- 分别将数组arr带入题目1-10中,如真则进入下一题
题目1:
题目2:arr[1]选项对应值=arr[4]
题目3:arr[2]选项对应值与其他三项不同,其他三项不一定相同
题目4:arr[3]选项对应值是否一致
题目5:arr[4]选项对应值是否一致
题目6:arr[5]选项对应值是否与arr[7]一致
题目7:计算次数最少的值,判断是否与arr[6]选项内的值次数一致
题目8:判断第一题选项与arr[7]选项对应值绝对值是否大于等于2
题目9:互为真假,arr[0]==arr[5]的布尔值不等于arr[4]==arr[8]选项对应值不一致
题目10:分别计算1234出现的次数,得出差值,判断与arr[9]对应值一致
3.题目1-10全部通过,则输出结果,最后得出的结果为
[2, 3, 1, 3, 1, 3, 4, 1, 2, 1]
1=B 2=C 3=A 4=C 5=A 6=C 7=D 8=A 9=B 10=A
完整代码
import math
def check1(item):
return True
def check2(item):
curIndex=1
if item[curIndex]==1:
if item[4] == 3:
return True
elif item[curIndex]==2:
if item[4] == 4:
return True
elif item[curIndex]==3:
if item[4] == 1:
return True
elif item[curIndex]==4:
if item[4] == 2:
return True
return False
def check3(item):
curIndex=2
if item[curIndex]==1:
if (item[2]!=item[5]) and (item[2]!=item[3]) and (item[2]!=item[1]) :
return True
if item[curIndex]==2:
if (item[5]!=item[2]) and (item[5]!=item[3]) and (item[5]!=item[1]) :
return True
if item[curIndex]==3:
if (item[1]!=item[2]) and (item[1]!=item[5]) and (item[1]!=item[3]) :
return True
if item[curIndex]==4:
if (item[3]!=item[2]) and (item[3]!=item[1]) and (item[3]!=item[5]) :
return True
return False
def check4(item):
curIndex=3
if item[curIndex]==1:
if item[0] == item[4]:
return True
elif item[curIndex]==2:
if item[1] == item[6]:
return True
elif item[curIndex]==3:
if item[0] == item[8]:
return True
elif item[curIndex]==4:
if item[5] == item[9]:
return True
return False
def check5(item):
curIndex=4
if item[curIndex]==1:
if item[curIndex] == item[7]:
return True
elif item[curIndex]==2:
if item[curIndex] == item[3]:
return True
elif item[curIndex]==3:
if item[curIndex] == item[8]:
return True
elif item[curIndex]==4:
if item[curIndex] == item[6]:
return True
return False
def check6(item):
curIndex=5
if item[curIndex]==1:
if item[1] == item[3] == item[7]:
return True
elif item[curIndex]==2:
if item[0] == item[5] == item[7]:
return True
elif item[curIndex]==3:
if item[2] == item[9] == item[7]:
return True
elif item[curIndex]==4:
if item[4] == item[8] == item[7]:
return True
return False
def check7(item):
count1=item.count(3)
count2=item.count(2)
count3=item.count(1)
count4=item.count(4)
minnum=min(count1,count2,count3,count4)
curIndex=6
if item[curIndex]==1:
if count1==minnum:
return True
elif item[curIndex]==2:
if count2==minnum:
return True
elif item[curIndex]==3:
if count3==minnum:
return True
elif item[curIndex]==4:
if count4==minnum:
return True
return False
def check8(item):
curIndex=7
if item[curIndex]==1:
if abs(item[0]-item[6])>=2:
return True
elif item[curIndex]==2:
if abs(item[0]-item[4])>=2:
return True
elif item[curIndex]==3:
if abs(item[0]-item[1])>=2:
return True
elif item[curIndex]==4:
if abs(item[0]-item[9])>=2:
return True
return False
def check9(item):
istrue=item[0]==item[5]
curIndex=8
if item[curIndex]==1:
istrue1 = item[5] == item[4]
if (istrue) != (istrue1):
return True
elif item[curIndex]==2:
istrue1 = item[9] == item[4]
if (istrue) != (istrue1):
return True
elif item[curIndex]==3:
istrue1 = item[1] == item[4]
if (istrue) != (istrue1):
return True
elif item[curIndex]==4:
istrue1 = item[8] == item[4]
if (istrue) != (istrue1):
return True
return False
def check10(item):
count1=item.count(3)
count2=item.count(2)
count3=item.count(1)
count4=item.count(4)
nummin=min(count1,count2,count3,count4)
nummax=max(count1,count2,count3,count4)
num=nummax-nummin
curIndex=9
if item[curIndex] == 1:
if count1 == num:
return True
elif item[curIndex] == 2:
if count2 == num:
return True
elif item[curIndex] == 3:
if count3 == num:
return True
elif item[curIndex] == 4:
if count4 == num:
return True
return False
atup = {1, 2, 3, 4}
for a1 in atup:
for a2 in atup:
for a3 in atup:
for a4 in atup:
for a5 in atup:
for a6 in atup:
for a7 in atup:
for a8 in atup:
for a9 in atup:
for a10 in atup:
aitem = []
aitem.append(a1)
aitem.append(a2)
aitem.append(a3)
aitem.append(a4)
aitem.append(a5)
aitem.append(a6)
aitem.append(a7)
aitem.append(a8)
aitem.append(a9)
aitem.append(a10)
if not check1(aitem):
continue
if not check2(aitem):
continue
if not check3(aitem):
continue
if not check4(aitem):
continue
if not check5(aitem):
continue
if not check6(aitem):
continue
if not check7(aitem):
continue
if not check8(aitem):
continue
if not check9(aitem):
continue
if not check10(aitem):
continue
print(aitem)
alist=['A','B','C','D']
index=1
for item in aitem:
print('题目'+str(index) +'='+ alist[item-1]+' ',end='')
index+=1