题目:约瑟夫环

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。(题目介绍来源于必应网典)

 

#coding = utf-8
def josephus(count, gap):
    loop = range(1, count+1)
    index = 0
    while loop != []:
        index = (gap + index)%len(loop)
        index -= 1
        yield loop[index]
        del loop[index]

if __name__ == "__main__":
for n in josephus(4, 2): print n

 非常简单的计算,也涉及到了生成器(带有yield的函数)。

posted on 2014-12-09 13:54  tom_zhao_vip  阅读(322)  评论(0编辑  收藏  举报