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)
ZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNvbWJpbmF0aW9ucwppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgZ2xvYmFsIEIsQwoKICAgIEIgPSBbXQogICAgQyA9IFtdCiAgICBEID0gW10KCiAgICBsaXN0ID0gWygwLDEpLCgxLDIpLCgyLDEpLCgzLDEpLCg0LDApLCg1LDApLCg2LDMpXQoKICAgIGRlZiBjb21wbGV0ZSh4LHkpOgogICAgICAgIGNoZWNrID0gVHJ1ZQogICAgICAgIGlmIGludCh4WzFdKStpbnQoeVsxXSkgPT0gMjoKICAgICAgICAgICAgaWYgQjoKICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBCOgogICAgICAgICAgICAgICAgICAgIGlmIHggaW4gdmFsdWUgb3IgeSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2sgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgIGlmIGNoZWNrOgogICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgIGVsc2U6ICPlpoLmnpxC54K656m677yM56ys5LiA57WE5LiA5a6a6YCy5Y67CiAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgIGRlZiBjb21wbGV0ZUEoeCx5KToKICAgICAgICBjaGVjayA9IFRydWUKICAgICAgICBpZiBCOiAj5bey57aT5YiG6YWN57WmQueahOS4jeiDveWGjeasoeWIhue1hAogICAgICAgICAgICBmb3IgdmFsdWUgaW4gQjoKICAgICAgICAgICAgICAgIGlmIHggaW4gdmFsdWUgb3IgeSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICBjaGVjayA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgIGlmIGNoZWNrOgogICAgICAgICAgICAgICAgaWYgaW50KHhbMV0pK2ludCh5WzFdKSA9PSAxOgogICAgICAgICAgICAgICAgICAgIGlmIEM6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBDOiAgICPlt7LntpPliIblpb3ntYTnmoTkuI3og73ph43opIfliIbntYQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHggaW4gdmFsdWUgb3IgeSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoZWNrOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgICAgICAgICBlbHNlOiAj5aaC5p6cQ+eCuuepuu+8jOesrOS4gOe1hOS4gOWumumAsuWOuwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHJldHVybiBGYWxzZQoKICAgICNCID0gWyAgYyBmb3IgYyBpbiBjb21iaW5hdGlvbnMobGlzdCwyKSBpZiBjb21wbGV0ZShjWzBdLGNbMV0pIF0KICAgIGZvciBjIGluIGNvbWJpbmF0aW9ucyhsaXN0LDIpOgogICAgICAgIGlmIGNvbXBsZXRlKGNbMF0sY1sxXSk6CiAgICAgICAgICAgIEIuYXBwZW5kKGMpCgogICAgZm9yIGQgaW4gY29tYmluYXRpb25zKGxpc3QsMik6CiAgICAgICAgaWYgY29tcGxldGVBKGRbMF0sZFsxXSk6CiAgICAgICAgICAgIEMuYXBwZW5kKGQpCgoKICAgIGZvciBpIGluIGxpc3Q6CiAgICAgICAgY2hlY2sgPSBUcnVlCiAgICAgICAgZm9yIHZhbHVlQiBpbiBCOgogICAgICAgICAgICBpZiBpIGluIHZhbHVlQjoKICAgICAgICAgICAgICAgIGNoZWNrID0gRmFsc2UKICAgICAgICBmb3IgdmFsdWVDIGluIEM6CiAgICAgICAgICAgIGlmIGkgaW4gdmFsdWVDOgogICAgICAgICAgICAgICAgY2hlY2sgPSBGYWxzZQogICAgICAgIGlmIGNoZWNrOgogICAgICAgICAgICBELmFwcGVuZChpKQoKCiAgICAjQyA9IFsgZCBmb3IgZCBpbiBjb21iaW5hdGlvbnMobGlzdCwyKSBpZiBjb21wbGV0ZUEoZFswXSxkWzFdKSBhbmQgZCBub3QgaW4gQl0KCiAgICBwcmludCgibGlzdD0iLGxpc3QpCiAgICBwcmludCgiQj0iLEIpCiAgICBwcmludCgiQz0iLEMpCiAgICBwcmludCgiRD0iLEQpCgoKCg==
('list=', [(0, 1), (1, 2), (2, 1), (3, 1), (4, 0), (5, 0), (6, 3)])
('B=', [((0, 1), (2, 1)), ((1, 2), (4, 0))])
('C=', [((3, 1), (5, 0))])
('D=', [(6, 3)])