From 2aa49d6434cba5ee69efca19aaed2bedd83a1c39 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Wed, 1 May 2013 11:25:40 -0700 Subject: [PATCH] rosetta-code.josephus-problem: change to use josephus-2 if k=2. --- .../josephus-problem/josephus-problem.factor | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/extra/rosetta-code/josephus-problem/josephus-problem.factor b/extra/rosetta-code/josephus-problem/josephus-problem.factor index 2f4c6260b8..44fa407aff 100644 --- a/extra/rosetta-code/josephus-problem/josephus-problem.factor +++ b/extra/rosetta-code/josephus-problem/josephus-problem.factor @@ -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 ;