from itertools import combinations
if __name__ == '__main__':
    global B,C

    B = []
    C = []
    D = []

    list = [(0,1),(1,2),(2,1),(3,1),(4,0),(5,0),(6,3)]

    def complete(x,y):
        check = True
        if int(x[1])+int(y[1]) == 2:
            if B:
                for value in B:
                    if x in value or y in value:
                        check = False
                        return False
                if check:
                    return True
            else: #如果B為空，第一組一定進去
                return True
        else:
            return False

    def completeA(x,y):
        check = True
        if B: #已經分配給B的不能再次分組
            for value in B:
                if x in value or y in value:
                    check = False
                    return False
            if check:
                if int(x[1])+int(y[1]) == 1:
                    if C:
                        for value in C:   #已經分好組的不能重複分組
                            if x in value or y in value:
                                check = False
                                return False
                        if check:
                            return True
                    else: #如果C為空，第一組一定進去
                        return True
                else:
                    return False
            else:
                return False
        else:
            return False

    #B = [  c for c in combinations(list,2) if complete(c[0],c[1]) ]
    for c in combinations(list,2):
        if complete(c[0],c[1]):
            B.append(c)

    for d in combinations(list,2):
        if completeA(d[0],d[1]):
            C.append(d)


    for i in list:
        check = True
        for valueB in B:
            if i in valueB:
                check = False
        for valueC in C:
            if i in valueC:
                check = False
        if check:
            D.append(i)


    #C = [ d for d in combinations(list,2) if completeA(d[0],d[1]) and d not in B]

    print("list=",list)
    print("B=",B)
    print("C=",C)
    print("D=",D)



