1. 程式人生 > >【Python列表基礎】約瑟夫問題

【Python列表基礎】約瑟夫問題

比較簡單,沒啥好說的嚶嚶嚶~

# -*- coding: utf-8 -*-
"""
Created on Sun Nov  4 15:30:35 2018

@author: wyt
"""
#約瑟夫問題

#佇列移動sep單位
def move(man,sep):
    for i in range(sep):
        item = man.pop(0)   #list.pop(i) 刪除index為i的元素並顯示
        man.append(item)    #list.append(x) 將元素x追加到列表尾部

def play(man=41,sep=3,rest=2):
    print("問題:一共有%d個人,每報數到%d的人就要自殺,最後剩餘%d個人活著。" %(man,sep,rest))
    man = [i for i in range(1,man+1)]   #初始化玩家佇列
    print("玩家佇列:",man)
    sep -= 1
    while len(man) > rest:
        move(man,sep)
        print("kill",man.pop(0))
    return man
servive = play()
print("最後活著的人是:",servive)