python-网红题2018刑侦科推理测试题

刑侦科推理测试题,终于用python敲出来了,附答案

题目

图片:
2018刑侦科推理试题

网红题 吓退了一大批原本还对刑侦专业跃跃欲试的各路英雄好汉。

解题思路

  1. 生成数组,ABCD替换为1234(本次比较暴力,未做优化)
  2. 分别将数组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