找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 306|回复: 4

[求助] 双色球号码最大连开统计

1

主题

2

帖子

2

积分

贫民

积分
2
pythontababc123 发表于 2017-8-11 11:18:12 | 显示全部楼层 |阅读模式
q1:双色球红球33个里面任意选1个共33个,看哪个号最近连开的最久统计出来
q2:双色球红球33个里面任意选15个共约10.37亿种组合,看哪组(或哪些组)数最近连开的最久统计出来。
说明,连开就是一组数里面只要和开奖结果有相同的号(可能是1个,也可能是2个,也可能更多),就叫连开
要求:
1,统计出来多少组,都列举出来
2,耗时在10分钟以内
3,开奖结果在txt里
ssq.txt (58.2 KB, 下载次数: 17)
回复

使用道具 举报

1

主题

15

帖子

15

积分

贫民

积分
15
HZQ_HZA 发表于 2017-8-11 16:10:34 | 显示全部楼层
本帖最后由 HZQ_HZA 于 2017-8-11 18:07 编辑

先马下,
##获取每一行 第一个字符日期,和后面出现重复的数放入到字典里面
##如  2017093 7 8 12 15 22 7 12 ---》{2017087:[6]}
##  2017092 10 18 19 29 33 33 1--->{2017087:[7,8]}
# -*- coding: utf-8 -*-

dic ={}
with open('C:\\ssq.txt') as file:
    data = file.readlines()
    print("*"*30)
    for nodes in data:
        node =nodes.split()
        print(node)
        lst =[]
        for i in node:
# 存放重复元素
            if node.count(i)>1:
                #查找重复元素
                if i not in lst:
                    lst.append(i)
                else:
                    pass
            else:
                pass
        dic[node[0]] = lst
print(dic)

输出
==================
{'2017093': [], '2017092': [], '2017091': [], '2017090': [], '2017089': ['12']***}
得到 每期出现的重复的号数。下面我是判断日期相差的值:
d = {'2017093': [11,9], '2017092': [12], '2017091': [], '2017090': [], '2017089': [12]}
lst_1= []
def dic(d):
    for  key  in d:
        if d[key]!=[]:
            print("============="+str(d[key]))
            lst_1.append(d[key])
        else:
            pass
    print("&&&&&&&&&&&&&&&")
    print(lst_1)#[[11, 9], [12], [12]]
    for i in range(0,(len(lst_1)-1)):
        print("iiiiiiiiiiiiiiii   "+str(lst_1))
        for j in range(i+1,len(lst_1)):
            print("jjjjjjjjjj   "+str(lst_1[j]))
            for k in range(0,len(lst_1)):
                print("kkkkkkkkkkkkkk "+str(lst_1[k]))
                if lst_1[k] in lst_1[j]:  
                    #查找重复出现的
                    key_i = list(d.keys())[list(d.values()).index(lst_1)]
                    key_j = list(d.keys())[list(d.values()).index(lst_1[j])]
                    print("--------------------")
                    print(key_i)
                    print(key_j)
                    
                    mix_key =abs(int(key_i)-int(key_j))
                    lst_mix = []
                    lst_mix.append(mix_key)
    print(lst_mix)
dic(d)
============但输出的结果有问题:
=============[11, 9]
=============[12]
=============[12]
&&&&&&&&&&&&&&&
[[11, 9], [12], [12]]
iiiiiiiiiiiiiiii   [11, 9]
jjjjjjjjjj   [12]
kkkkkkkkkkkkkk 11
kkkkkkkkkkkkkk 9
jjjjjjjjjj   [12]
kkkkkkkkkkkkkk 11
kkkkkkkkkkkkkk 9
iiiiiiiiiiiiiiii   [12]
jjjjjjjjjj   [12]
kkkkkkkkkkkkkk 12
--------------------
2017092
2017092
[0]
================
循环没有取到3  求解




回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
pythontababc123  楼主| 发表于 2017-8-11 21:12:49 | 显示全部楼层
首先感谢您的回帖!我试了一下,好像不能出结果
回复 支持 反对

使用道具 举报

1

主题

15

帖子

15

积分

贫民

积分
15
HZQ_HZA 发表于 2017-8-12 09:04:13 | 显示全部楼层
pythontababc123 发表于 2017-8-11 21:12
首先感谢您的回帖!我试了一下,好像不能出结果

我就当面试题..求时间差我没弄出来,不知道什么原因
回复 支持 反对

使用道具 举报

1

主题

15

帖子

15

积分

贫民

积分
15
HZQ_HZA 发表于 2017-8-12 14:03:46 | 显示全部楼层
本帖最后由 HZQ_HZA 于 2017-8-12 18:46 编辑
HZQ_HZA 发表于 2017-8-12 09:04
我就当面试题..求时间差我没弄出来,不知道什么原因
下面的可以找出每期重复数字,最小间隔时间【dic_mix 后面有重复需要去重】,写的还是有问题》。
dic ={}

with open('C:\\ssq.txt') as file:
    data = file.readlines()
    #print("*"*30)
    for nodes in data:
        node =nodes.split()
        print("node ===="+str(node))
        for i in node:
            if node.count(i)>1:
                lst =[]
                if i not in lst:
                    lst.append(i)
                    dic[node[0]] = lst                  
                else:
                    pass
            else:
                pass
print("dic ======="+str(dic))

dic_mix =[]  
lst =[]
for  key  in dic:
    if dic[key]!=[]:
        lst.append(dic[key])
    else:
        pass
print("%%%lst%%=="+str(lst))
for i in range(0,len(lst)-1):
   
    for j in range(i+1,len(lst)):
        cc =list((set(lst).union(set(lst[j])))^(set(lst)^set(lst[j])))
        if len(cc)>0:
            list11= []
            print("cc&&&&&&&&"+str(cc))
            #flg=True
            #while flg:
            for k,v in dic.items():
                #print("KKK=="+str(k))   
                #print("vvv=="+str(v))
                print("KKKKKKKKKKKKKKKKK")
                print(type(k))                                      
                if v == cc:
                    print("&&KK&&"+str(k)+ " "+str(v))
                    list11.append(k)   
            print("list11==="+str(list11))
            list11.sort()
            print("list11=XXXXX=="+str(list11))
            lkks=[]
            for i in range(0,len(list11)-1):
                for j in range(i+1,i+2):           
                    dd = abs(int(list11)-int(list11[j]))
                    lkks.append(dd)
            kk =min(lkks)
            dic_mix.append((cc,kk))
        else:
            pass
print(dic_mix)
=============
ssq.txt
2017093 7 7 9 15 22 27 12
2017092 7 7 19 29 32 33 9
2017091 5 5 10 23 28 29 3
2017090 1 7 10 16 22 33 9
2017089 11 12 13 16 23 25 12
2017088 5 5 18 22 23 29 6
2017087 7 7 13 14 19 28 6



===
[(['5'], 3), (['7'], 1), (['7'], 1)]

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表