庄彦涛_2、4、8、16、32位成员循环赛矩阵排列

8 篇文章 0 订阅
1 篇文章 0 订阅

呈现结果

这是2位成员
(图1)

这是4位成员
(图2)

这是8位成员
(图3)

这是16位成员
(图4)

标题这是32位成员
(图5)

由于32位成员数字太长软件已显示为省略号(如图5),故写入到csv文件中方便查看
(图6)

你可以随便在csv文件的一个小框写个 1 , 然后格式刷刷一下,再格式刷一下出来的数据,就会如本图一样,就是我们要的答案
(图7)


import numpy
import numpy as np
import math

AllZeroMatrix=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
a=aa=0
mm=1
count=0
cc=tt=0
A=[]
B=[]
T3=""


def Round_Robin(n,a):
    global tt
    global aa
    global cc
    global count
    global AllZeroMatrix
    global A
    global B
    global C
    global D
    global mm
    global open
    global T3
    
    if n-1==0 or n%2!=0:
        print("比赛日程表不需排")   # 递归地对选手进行分割,直到只剩下一个选手时,比赛日程表不需排

    else:
        nn=n
        print(n)
        w=int(n/2)
        if n!=0:
            a+=1
        print("w:",w)
        print("a:",a)
        print("\n")
        
        
        if n>2:
            return Round_Robin(int(n/2),a)
        
        if a==1:
            c=pow(2,2*a)
            d=int(math.sqrt(c))
            if count==0:
                AllZeroMatrix=np.full((2,d),0)  #全零矩阵  (n行,n列 ,填充数)
                print(AllZeroMatrix)

            z=pow(2,a)-1
            u=pow(2,a)
            print("z:",z)
            #-------------------------------
                
            AllZeroMatrix[0,z-1]=z
            AllZeroMatrix[1,z]=AllZeroMatrix[0,z-1]
                    
            AllZeroMatrix[1,z-1]=u
            AllZeroMatrix[0,z]=AllZeroMatrix[1,z-1]
                    
            #-------------------------------
            if n==2:
                print("AllZeroMatrix1:\n")
                print(AllZeroMatrix)
                return 0
            print("AllZeroMatrix1:\n")
            print(AllZeroMatrix)
            

            qq=pow(2,aa-1)
            for dd in range(qq):
                T="a" +str(tt+1)+".csv"
                if dd==0:
                    Mediator = "a" +str(dd+1)
                    Mediator1 = "b" +str(dd+1)
                    Mediator2 = "c" +str(dd+1)
                    Mediator3 = "d" +str(dd+1)
                    Mediator4 = "e" +str(dd+1)
                    
                    print("\n")
                    Mediator=AllZeroMatrix[0:2,0+2*dd:(2+2*dd)]
                    
                    print("Mediator-------------:\n")
                    print(Mediator)

                    Mediator1=AllZeroMatrix[0:2,0+2*dd:(4+2*dd)]
                    print("Mediator1-------------:\n")
                    print(Mediator1)

            
                    Mediator2=Mediator1[0:2,2:4]


                    print("Mediator2:\n")
                    print(Mediator2)
                    Mediator3 = np.concatenate((Mediator2, Mediator), axis=1)
                    print("Mediator3--------------:\n")
                    print(Mediator3)

                    Mediator4 = np.concatenate((Mediator1, Mediator3), axis=0)
                    print("Mediator4:\n")
                    print(Mediator4)

                    Mediator5=Mediator4

                    #Mediator4.tofile('a0.txt', sep = ' ')
                    numpy.savetxt(T, Mediator4, delimiter = ',')
                   
                    
                elif dd>=1 and 4*dd<pow(2,aa):
                    tt+=1
                    
                    Mediator=AllZeroMatrix[0:2,0+4*dd:(2+4*dd)]
                    print("Mediator:\n")
                    print(Mediator)

                    Mediator1=AllZeroMatrix[0:2,0+4*dd:(4+4*dd)]
                    print("Mediator1-------------:\n")
                    print(Mediator1)

                    Mediator2=Mediator1[0:2,2:4]
                    print("Mediator2:\n")
                    print(Mediator2)
                    Mediator3 = np.concatenate((Mediator2, Mediator), axis=1)
                    print("Mediator3--------------:\n")
                    print(Mediator3)

                    Mediator4 = np.concatenate((Mediator1, Mediator3), axis=0)
                    print("Mediator4:\n")
                    print(Mediator4)

                    Mediator6=Mediator4

                    
                    M4 = np.concatenate((Mediator5, Mediator6), axis=1)
                    print("M4:\n")
                    print(M4)
                        
                    M5 = np.concatenate((Mediator6, Mediator5), axis=1)
                    print("M5:\n")
                    print(M5)

                    M6 = np.concatenate((M4, M5), axis=0)
                    print("\n\n\nM6:\n")
                    print(M6)


                    M7=M6

                    if aa>=4:
                        
                        Mediator5=Mediator4
                        
                        #M6.tofile(T, sep = ' ')
                        
                        
                        T2="a" +str(mm)+".csv"
                        
                        numpy.savetxt(T, M6, delimiter = ',')
                        print("tt:",tt)
                        #T3="a" +str(tt+1)+".csv"
                        
                        JiShu=aa-3
                        for ban in range(JiShu-1):
                        #a1 a3 a5 a7
                            print("ban:",ban)
                            mm=2*ban+mm
                            mm2=mm
                                
                            print("aa:",aa)
                            print("mm",mm)
                            print("T2:",T2)

                        
                        my0 = numpy.loadtxt(open(T2,"rb"),delimiter=",",skiprows=0)
                        print("my0:\n")
                        my0=my0.astype(np.int32)
                        print(my0)
                            
                        #mm2=mm+2
                        #print("mm2",mm2)
                        T3="a" +str(mm+2)+".csv"
                        print("T3:",T3)
                        print(tt)
                        my = numpy.loadtxt(open(T3,"rb"),delimiter=",",skiprows=0)
                        print("my:\n")
                        my=my.astype(np.int32)
                        print(my)

                        

                        M8 = np.concatenate((my0, my), axis=1)
                        print("M8:\n")
                        print(M8)
                        
                        M9 = np.concatenate((my, my0), axis=1)
                        print("M9:\n")
                        print(M9)

                        M10 = np.concatenate((M8, M9), axis=0)
                        print("\n\n\nM10:\n")
                        print(M10)

                        if aa>=5:
                            print("b:",b)
                            HELP=aa-4
                            bb=int(b/(2*HELP))-1
                            #print("M10[0,15]:",M10[0,15])
                            if M10[0,bb]==b:
                                numpy.savetxt('b1.csv', M10, delimiter = ',')
                            if M10[0,bb]==int(b/2):
                                numpy.savetxt('b2.csv', M10, delimiter = ',')

                            my3 = numpy.loadtxt(open('b1.csv',"rb"),delimiter=",",skiprows=0)
                            my4 = numpy.loadtxt(open('b2.csv',"rb"),delimiter=",",skiprows=0)

                            my3=my3.astype(np.int32)
                            my4=my4.astype(np.int32)
                            print(my3)
                            print(my4)
                            
                            M11 = np.concatenate((my3, my4), axis=1)
                            print("M11:\n")
                            print(M11)
                            
                            M12 = np.concatenate((my4, my3), axis=1)
                            print("M12:\n")
                            print(M12)

                            M13 = np.concatenate((M11, M12), axis=0)
                            print("\n\n\nM12:\n")
                            print(M13)

                            numpy.savetxt('b3.csv', M13, delimiter = ',')
                            my5 = numpy.loadtxt(open('b3.csv',"rb"),delimiter=",",skiprows=0)
                            my5=my5.astype(np.int32)
                            print("\n\n\n最终结果:\n")
                            print(my5)
                            

                        continue
                    
            
        else:
            
            c=int(pow(2,a))
            
            print("c:",c)
            if count==0:
                aa=a
                print("aa:",aa)
                
                AllZeroMatrix=np.full((2,c),0)  #全零矩阵  (n行,n列 ,填充数)
                print(AllZeroMatrix)

                
            #-------------------------------
                
            for rr in range(pow(2,a-1)):
                z=pow(2,a)-1-2*rr
                u=pow(2,a)-2*rr
                print("z:",z)
                    
                AllZeroMatrix[0,(z-1)]=z
                AllZeroMatrix[1,z]=AllZeroMatrix[0,(z-1)]
                    
                AllZeroMatrix[1,(z-1)]=u
                AllZeroMatrix[0,z]=AllZeroMatrix[1,(z-1)]
                    
            #-------------------------------
            print("AllZeroMatrix2:\n")
            print(AllZeroMatrix)

            
            count+=1

                
            return Round_Robin(0,a-1)

    
    
        
b=int(input("请你输入要选手数量:"))
Round_Robin(b,a)

64位的弄不了,把我大脑cpu给干烧了,不弄了哈哈哈

注:结果在b3.csv

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值