计算机计算推理题

短视频又刷到了这个推理题,有人说根本不是刑侦科的,就当算着玩吧。

2019年初用python写了个计算的方法,穷举法比较low,但是现在恐怕一种都不会写了。

思路就是每道题先按顺序取一个答案,然后这十道题互相有关联,比如第五题和第二题互相对应,就列出所有可能的情况,第五题是A,第二题就是C。找出所有的关联。不满足的答案删除,继续取下一个答案。第十题要算数,又单写了一点。

choices=['A','B','C','D']
answer=[]
#第一题
for a in choices:
    answer.append(a)
    #第二题
    for b in choices:
        answer.append(b)
        #第三题
        for c in choices:
            answer.append(c)
            #第四题
            for d in choices:
                answer.append(d)
                #第五题
                for e in choices:
                    answer.append(e)
                    #第六题
                    for f in choices:
                        answer.append(f)
                        #第七题
                        for g in choices:
                            answer.append(g)
                            #第八题
                            for h in choices:
                                answer.append(h)
                                #第九题
                                for i in choices:
                                    answer.append(i)
                                    #第十题
                                    for j in choices:
                                        answer.append(j)
                                        if ((answer[4]=='A' and answer[1]=='C') or (answer[4]=='B' and answer[1]=='D') or (answer[4]=='C' and answer[1]=='A') or (answer[4]=='D' and answer[1]=='B')) and ((answer[1]==answer[2]==answer[5]!=answer[3] and answer[2]=='D') or (answer[1]==answer[2]==answer[3]!=answer[5] and answer[2]=='B')  or (answer[1]==answer[5]==answer[3]!=answer[2] and answer[2]=='A')  or (answer[2]==answer[5]==answer[3]!=answer[1] and answer[2]=='C')) and (((answer[0]==answer[4] and answer[1]!=answer[6] and answer[0]!=answer[8] and answer[5]!=answer[9]) and answer[3]=='A') or ((answer[1]==answer[6] and answer[0]!=answer[4] and answer[0]!=answer[8] and answer[5]!=answer[9]) and answer[3]=='B') or ((answer[0]==answer[8] and answer[0]!=answer[4] and answer[1]!=answer[6] and answer[5]!=answer[9]) and answer[3]=='C') or ((answer[5]==answer[9] and answer[0]!=answer[4] and answer[0]!=answer[8] and answer[1]!=answer[6]) and answer[3]=='D')) and (((answer[4]==answer[3] and answer[4]!=answer[6] and answer[4]!=answer[7] and answer[4]!=answer[8]) and answer[4]=='B') or ((answer[4]==answer[6] and answer[4]!=answer[3] and answer[4]!=answer[7] and answer[4]!=answer[8]) and answer[4]=='D') or ((answer[4]==answer[7] and answer[4]!=answer[6] and answer[4]!=answer[3] and answer[4]!=answer[8]) and answer[4]=='A') or ((answer[4]==answer[8] and answer[4]!=answer[6] and answer[4]!=answer[7] and answer[4]!=answer[3]) and answer[4]=='C')) and ((answer[1]==answer[7]==answer[3] and answer[5]=='A') or (answer[0]==answer[7]==answer[5] and answer[5]=='B') or (answer[2]==answer[7]==answer[9] and answer[5]=='C') or (answer[4]==answer[7]==answer[8]) and answer[5]=='D') and ((((answer[0]=='A' and answer[6]=='C') or (answer[0]=='A' and answer[6]=='D')) or ((answer[0]=='B' and answer[6]=='D') or (answer[6]=='A' and answer[0]=='C') or (answer[6]=='A' and answer[0]=='D') or (answer[6]=='B' and answer[0]=='D')) and answer[7]=='A') or (((answer[0]=='A' and answer[4]=='C') or (answer[0]=='A' and answer[4]=='D') or (answer[0]=='B' and answer[4]=='D') or (answer[4]=='A' and answer[0]=='C') or (answer[4]=='A' and answer[0]=='D') or (answer[4]=='B' and answer[0]=='D')) and answer[7]=='B') or (((answer[0]=='A' and answer[1]=='C') or (answer[0]=='A' and answer[1]=='D') or (answer[0]=='B' and answer[1]=='D') or (answer[1]=='A' and answer[0]=='C') or (answer[1]=='A' and answer[0]=='D') or (answer[1]=='B' and answer[0]=='D')) and answer[7]=='C') or (((answer[0]=='A' and answer[9]=='C') or (answer[0]=='A' and answer[9]=='D') or (answer[0]=='B' and answer[9]=='D') or (answer[9]=='A' and answer[0]=='C') or (answer[9]=='A' and answer[0]=='D') or (answer[9]=='B' and answer[0]=='D')) and answer[7]=='D')):
                                            # print (answer)
                                            A=[]
                                            B=[]
                                            C=[]
                                            D=[]
                                            for k in answer:
                                                if k=='A':
                                                    A.append(k)
                                                elif k=='B':
                                                    B.append(k)
                                                elif k=='C':
                                                    C.append(k)
                                                else:
                                                    D.append(k)
                                            if ((len(A)<len(B) and len(A)<len(C) and len(A)<len(D)) and answer[6]=='C') or ((len(B)<len(A) and len(B)<len(C) and len(B)<len(D)) and answer[6]=='B') or ((len(C)<len(A) and len(C)<len(B) and len(C)<len(D)) and answer[6]=='A') or ((len(D)<len(A) and len(D)<len(C) and len(D)<len(B)) and answer[6]=='D'):
                                                # print (answer)
                                                E=[]
                                                E.append(len(A))
                                                E.append(len(B))
                                                E.append(len(C))
                                                E.append(len(D))
                                                E=sorted(E)
                                                # print (E)
                                                if (E[3]-E[0]==3 and answer[9]=='A') or (E[3]-E[0]==2 and answer[9]=='B') or (E[3]-E[0]==4 and answer[9]=='C') or (E[3]-E[0]==1 and answer[9]=='D'):
                                                    if (((answer[0]==answer[5] and answer[4]!=answer[5]) or (answer[0]!=answer[5] and answer[4]==answer[5])) and answer[8]=='A') or (((answer[0]==answer[5] and answer[4]!=answer[9]) or (answer[0]!=answer[5] and answer[4]==answer[9])) and answer[8]=='B') or (((answer[0]==answer[5] and answer[4]!=answer[1]) or (answer[0]!=answer[5] and answer[4]==answer[1])) and answer[8]=='C') or (((answer[0]==answer[5] and answer[4]!=answer[8]) or (answer[0]!=answer[5] and answer[4]==answer[8])) and answer[8]=='D'):
                                                        print ("正确答案:")
                                                        print(answer)
                                                E=[]
                                            del answer[9]
                                        else:
                                            del answer[9]
                                    del answer[8]
                                del answer[7]
                            del answer[6]
                        del answer[5]
                    del answer[4]
                del answer[3]
            del answer[2]
        del answer[1]
    del answer[0]

对代码有点生疏了,又该捡起来复习了。嗯……从明天开始……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值