zoukankan      html  css  js  c++  java
  • 刑警题暴力破解脚本

    网上看见的,下面是代码(写的很烂)

    # -*- coding:utf-8 -*-
    import sys
    sys.setrecursionlimit(1000000)
    let=['A','B','C','D']
    #题目选项
    n3=[2,5,1,3]
    n4=[[0,4],[1,6],[0,8],[5,9]]
    n5=[7,3,8,6]
    n6=[[1,3],[0,5],[2,9],[4,8]]
    n7=['C','B','A','D']
    n8=[6,4,1,9]
    n9=[5,9,1,8]
    n10=[3,2,4,1]
    s=[]
    def dfs (index=0):#深度优先遍历
        global s
        if index==10:
            juduge(s)
            return
        for i in range(4):
            s.append(chr(ord('A')+i))
            dfs(index+1)
            s.pop(-1)
    def juduge(s):
        n=[s.count('A'),s.count('B'),s.count('C'),s.count('D')]
        if ord(s[4])-ord(s[1])!=2 and ord(s[4])-ord(s[1])!=-2:#第二题
            return
        n33=n3[:]
        n33.remove(n3[ord(s[2])-ord('A')])#第三题
        if s[n3[ord(s[2])-ord('A')]] == s[n33[0]] or s[n3[ord(s[2])-ord('A')]] == s[n33[1]] or s[n3[ord(s[2])-ord('A')]] == s[n33[2]]:
            return
        if s[n4[ord(s[3])-ord('A')][0]] != s[n4[ord(s[3])-ord('A')][1]]:#第四题
            return
        if s[n5[ord(s[4])-ord('A')]] != s[4]:#第五题
            return
        if s[n6[ord(s[5])-ord('A')][0]]!=s[n6[ord(s[5])-ord('A')][1]]:#第六题
            return
        elif s[n6[ord(s[5])-ord('A')][0]]!=s[7]:
            return    
        if n.count(min(n))==1:#第七题
            if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))]:
                return
        elif n.count(min(n))==2:
            if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n)))]:
                return
        elif n.count(min(n))==3:
            if n7[ord(s[6])-ord('A')]!= let[n.index(min(n))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n)))] and n7[ord(s[6])-ord('A')]!= let[n.index(min(n),n.index(min(n),n.index(min(n))))]:
                return
        n91=[s[0]==s[5],s[n9[ord(s[8])-ord('A')]] == s[4]]#第九题
        if not(n91[0]^n91[1]):
            return
        if ord(s[n8[ord(s[7])-ord('A')]])-ord(s[0])==1 or ord(s[n8[ord(s[7])-ord('A')]])-ord(s[0])==-1:#第八题
            return  
        if n10[ord(s[9])-ord('A')]!=(max(n)-min(n)):#第十题
            return  
        print s
    
    
    
    '''
    s=''
    for a in range(4):
        for b in range(4):
            for c in range(4):
                for d in range(4):
                    for e in range(4):
                        for f in range(4):
                            for g in range(4):
                                for h in range(4):
                                    for i in range(4):
                                        for j in range(4):
                                            s+=chr(ord('A')+a)
                                            s+=chr(ord('A')+b)
                                            s+=chr(ord('A')+c)
                                            s+=chr(ord('A')+d)   
                                            s+=chr(ord('A')+e)
                                            s+=chr(ord('A')+f)
                                            s+=chr(ord('A')+g)
                                            s+=chr(ord('A')+h)
                                            s+=chr(ord('A')+i)
                                            s+=chr(ord('A')+j)
                                            juduge(s)         
                                            s='''''#循环穷举
    dfs(0)
    print 'finish'
  • 相关阅读:
    rabbitmq 学习
    linux下安装rabbitmq 集群
    excel中将时间戳转换为日期格式
    python实现批量修改服务器密码
    python 根据字典的键值进行排序
    python字符串的拼接
    python的变量
    python基础1
    【性能分析】使用Intel VTune Amplifier
    【vim】搜索与替换
  • 原文地址:https://www.cnblogs.com/kagari/p/8495629.html
Copyright © 2011-2022 走看看