-->
function linked_list(sequence prisoners, integer step, survivors)
integer n = length(prisoners)
sequence links = tagset(n,2)&1
integer p = n, prvp
while n>survivors do
for i=1 to step do
prvp = p
p = links[p]
end for
prisoners[p] = -1
links[prvp] = links[p]
n -= 1
end while
return remove_all(-1,prisoners)
end function