- def solve(ring, start, stop):
- length = len(ring)
- if start > 1:
- ring = ring[start-1:] + ring[0:start-1]
- # print(ring)
- print("start counting ...")
- count = 0
- while length > 1:
- for i in range(0, stop):
- print(i+1, end=" ")
- count += 1
- if count > length:
- count = count % length
- # print("count: ", count)
- quit = ring.pop(count-1)
- ring = ring[count-1:] + ring[:count-1]
- length = len(ring)
- print("quit the ring: ", quit)
- count = 0
- # print(ring)
- return ring
- if __name__ == "__main__":
- """已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
- 从编号为k的人开始报数,数到m的那个人出列;
- 他的下一个人又从1开始报数,数到m的那个人又出列;
- 依此规律重复下去,直到圆桌周围的人全部出列。 """
- print(solve([1,2,3,4,5,6,7,8,9], 1, 5))
- print(solve([1,2,3,4,5,6,7,8,9], 3, 5))
- print(solve(['a','b','c','d','e','f','g','h','i','j','k'], 1, 3))
- #该片段来自于http://www.codesnippet.cn/detail/100720134530.html
来源: http://www.codesnippet.cn/detail/100720134530.html