:: josephus' ( n k -- m ) n [1,b] 0 [ [ k + ] dip mod ] reduce ; : josephus2' ( n -- m ) dup log2 2^ - 2 * ; :: josephus ( n k -- m ) n 2 = [ k josephus2' ] [ n k josephus' ] if ;