rosetta-code.josephus-problem: change to use josephus-2 if k=2.

db4
John Benediktsson 2013-05-01 11:25:40 -07:00
parent c1ab4aab59
commit 2aa49d6434
1 changed files with 6 additions and 3 deletions

View File

@ -40,8 +40,11 @@ IN: rosetta-code.josephus-problem
! simply walks away. These details are not relevant, at least not ! simply walks away. These details are not relevant, at least not
! mathematically. ! mathematically.
:: josephus ( n k -- m ) :: josephus-k ( n k -- m )
n [1,b] 0 [ [ k + ] dip mod ] reduce ; n [1,b] 0 [ [ k + ] dip mod ] reduce ;
: josephus2 ( n -- m ) ! faster for k=2 :: josephus-2 ( n -- m ) ! faster for k=2
dup log2 2^ - 2 * ; n n log2 2^ - 2 * ;
:: josephus ( n k -- m )
k 2 = [ n josephus-2 ] [ n k josephus-k ] if ;