標籤:python 約瑟夫環
#! /usr/bin/env python3#coding = utf-8import itertoolsdef josef(list0, start, interval): # start為開始刪除的元素下標,interval為間隔 removed_list = [] # 建立用於儲存被刪除元素的列表 round_cycle = itertools.cycle(list0) # 建立迴圈遍曆list0的產生器 for i in range(start): current_element = next(round_cycle) # 定位當前元素 removed_list.append(current_element) # 將start位置的元素放入刪除列表 while len(removed_list) < len(list0): count = 0 # 計數放在for迴圈外,每剔除一個元素後歸零 for i in range(interval): # 迴圈開始 while count < interval: # 計數開始 current_element = next(round_cycle) if current_element not in removed_list: count += 1 removed_list.append(current_element) print('removed_list={}'.format(removed_list)) return removed_list[-1]def main(): test_list = [i for i in range(1, 10)] print('test_list={}'.format(test_list)) print('last_one={}'.format(josef(list0=test_list, start=2, interval=3)))if __name__ == '__main__': main()# 結果輸出'''test_list=[1, 2, 3, 4, 5, 6, 7, 8, 9]removed_list=[2, 5, 8, 3, 7, 4, 1, 6, 9]last_one=9'''
python版約瑟夫環