]> gitweb.factorcode.org Git - factor.git/commitdiff
rosetta-code.josephus-problem: change to use josephus-2 if k=2.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 1 May 2013 18:25:40 +0000 (11:25 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 1 May 2013 18:25:40 +0000 (11:25 -0700)
extra/rosetta-code/josephus-problem/josephus-problem.factor

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