--> 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