# 丢手绢问题
# 游戏规则: 有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