#男人编号 0 - N #女人编号 0 - N #TT编号 0 - N def dispalyTT(): global N, TT_inside, TT_outside # 显示每个TT的里侧外侧都包括了谁的病毒 print("\t--------当前TT的带毒状态--------") for index in range(N): print("\t %d号TT"%(index),end='') print("里:",end='') for gender, id in TT_inside[index]: if gender == ' male': print('%d号男'%id,end=',') else: print('%d号女'%id,end=',') print("外:",end='') for gender, id in TT_outside[index]: if gender == ' male': print('%d号男'%id,end=',') else: print('%d号女'%id,end=',') print('') print('************************************************************') def infect_test(gender, id, virus): global Infected # 感染测试函数, 如果正在接触的TT中包含了其它相同性别的XX,就把Infected标记为True # virus 存储的是正在接触的TT中包含了哪些人的病毒 for _gender, _id in virus: # 病毒中一个同性的,但是是别人的,GG if _gender == gender and _id != id: Infected = True print('Infected : %s %d using these TTs with virus : '%(gender,id), virus) def make_love_test(male, female, tt_number): global N, TT_inside, TT_outside # 进行一次ML, 并判断是否会出现感染的情况 # 从里到外,相连的TT的病毒相互感染一下 for enum in range(tt_number): # 当前正在处理从里到外的第几个TT this_index = ( male + enum ) % N if enum == 0: # 如果是最里面的TT,要判断一下这个TT里侧是否包括其它男人的病毒 infect_test(' male', male, TT_inside[this_index]) TT_inside[this_index].add((' male',male)) else: # 对于其它情况,当前TT的里侧要附上前一个TT的外侧病毒 last_index = (this_index - 1 ) % N TT_inside[this_index].update(TT_outside[last_index]) if enum == tt_number - 1: # 如果是最外面的TT,要判断一下这个TT外侧是否包括其它女人的病毒 infect_test('female', female, TT_outside[this_index]) TT_outside[this_index].add(('female', female)) else: # 对于其它情况,当前TT的外侧要附上后一个TT的里侧病毒 next_index = (this_index + 1 ) % N TT_outside[this_index].update(TT_inside[next_index]) if __name__ == '__main__': # N对不知廉耻,但又让人同情的男人女人们 N = 4 # 标记是否存在感染的情况 Infected = False # 存储每个TT里侧包含了哪些男人和女人的病毒 TT_inside = [set() for _ in range(N)] # 存储每个TT外侧包含了哪些男人和女人的病毒 TT_outside = [set() for _ in range(N)] # 你们这些男人不要急,一个一个来 for male in range(N): #由多到少的使用TT for tt_number in range(N, 0, -1): # 算一下是哪个小可怜被无情的践踏了(保证每个女人只被一个TT接触) female = (male + tt_number - 1) % N # 输出当前正在交易的是哪一对,和它们使用的TT(由里到外) print('%d号男 x %d号女, 由里到外的TT编号 : '%(male,female),[(male + offset)%N for offset in range(tt_number)]) # 来呀,快活呀 make_love_test(male, female, tt_number) # Oh~ WTF ~ 感染了! if Infected == True: exit(-1) # 显示此时TT的里侧外侧都包括了谁的病毒 #dispalyTT() # 嘻嘻嘻,happy ending print('没有任何感染')
TT
猜你喜欢
转载自www.cnblogs.com/dc-blog/p/8908960.html
今日推荐
周排行