我正在努力解决约瑟夫斯问题,我有工作代码.
def J(n,x):
li=range(1,n+1)
k = -1
while li:
print li
k = (k+x) % len(li)
li.pop(k)
k =k- 1
J(10, 3)
Run Code Online (Sandbox Code Playgroud)
现在我想重写它以获得如下结果:
1 1 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 0 1 1 0 1 1 1 1
1 1 0 1 1 0 1 1 0 1
1 0 0 1 1 0 1 1 0 1
1 0 0 1 1 …Run Code Online (Sandbox Code Playgroud) 我正在寻找Josephus_problem,但结果不是我的预期.为什么?
def J(n,x):
li=range(1,n+1)
k=0
res=[]
while len(li)>1:
k= (x+k-1) % len(li)
li.pop(k)
res.append(li)
#print li
return res
print J(5,3)
Run Code Online (Sandbox Code Playgroud)
预期产出:
[1, 2, 4, 5]
[2, 4, 5]
[2, 4]
[4]
Run Code Online (Sandbox Code Playgroud)
实际产量:
[[4], [4], [4], [4]]
Run Code Online (Sandbox Code Playgroud) 例如:NestList(f,x,3)----> [x,f(x),f(f(x)),f(f(f(x)))]