-->
function sliding_queue(sequence prisoners, integer step, survivors)
integer n = length(prisoners)
while n>survivors do
integer k = remainder(step-1,n)+1 -- (mostly k==step)
prisoners = prisoners[k+1..$]&prisoners[1..k-1] -- rotate, dropping one.
n -= 1
end while
return prisoners
end function