python玩丢手绢问题,出局的顺序
# 丢手绢问题
# 游戏规则: 有N个小朋友玩丢手绢游戏,做成一圈,从第一个小朋友开始数数,从一开始数,数到指定数字的小朋友要出列,然后下一个小朋友继续从1开始数,依次类推,算出最后一个留下来的小朋友是谁?
#!/usr/bin/python #coding:utf-8 if __name__=="__main__": pcount = 6 # 丢手绢的小朋友数量 out_num = 4 # 指定捡手绢的小朋友位数 num_list = range(1,pcount+1) # 将小朋友排成一列 print_list = [] # 记录出局小朋友 i = 0 # 手绢 index = -1 # 当前拿到手绢的小朋友 while True: i += 1 index += 1 # 如果手绢在最后一个小朋友手里要传回到第一 if index>=len(num_list) or index<0: index = 0 # 当前要移除的小朋友 if i==out_num: i = 0 is_add = 0 # 判断是否是最后一个小朋友,如果不是,那么小朋友被移除, # 后面的小朋友要向前走一步 if index <len(num_list)-1: is_add = -1 print_list.append(num_list[index]) del num_list[index] index += is_add # 只剩下一个小朋友,游戏结束 if len(num_list)==1: print_list.append(num_list[0]) break # 打印出小朋友出局的顺序 for item in print_list: print "%s, " % item