]> gitweb.factorcode.org Git - factor.git/commitdiff
math.combinatorics: minor performance improvements.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 25 Apr 2012 01:42:34 +0000 (18:42 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 25 Apr 2012 01:42:34 +0000 (18:42 -0700)
basis/math/combinatorics/combinatorics.factor
extra/project-euler/common/common.factor

index c9bf5c6bf54c1b5f6d47c7569ad2d4fd8e15cde2..fd0ad7ba7bde9b066740993cf5e3f2943c8d79d3 100644 (file)
@@ -32,13 +32,13 @@ PRIVATE>
 <PRIVATE
 
 : factoradic ( n -- factoradic )
-    0 [ over 0 > ] [ 1 + [ /mod ] keep swap ] produce reverse 2nip ;
+    0 [ over 0 > ] [ 1 + [ /mod ] keep swap ] produce reverse! 2nip ;
 
 : (>permutation) ( seq n -- seq )
-    [ '[ _ dupd >= [ 1 + ] when ] map ] keep prefix ;
+    [ '[ _ dupd >= [ 1 + ] when ] map! ] keep prefix ;
 
 : >permutation ( factoradic -- permutation )
-    reverse 1 cut [ (>permutation) ] each ;
+    reverse! 1 cut [ (>permutation) ] each ;
 
 : permutation-indices ( n seq -- permutation )
     length [ factoradic ] dip 0 pad-head >permutation ;
@@ -147,7 +147,7 @@ C: <combo> combo
 
 :: combination-indices ( m combo -- seq )
     combo m combo dual-index combinadic
-    combo seq>> length 1 - swap [ - ] with map ;
+    combo seq>> length 1 - swap [ - ] with map! ;
 
 : apply-combination ( m combo -- seq )
     [ combination-indices ] keep seq>> nths ;
index 0e06e9eb9364efdce2e5e54eac0140404f91c543..33bd1fd4089366729656f91d4cf82e1b643fc4c0 100644 (file)
@@ -80,7 +80,7 @@ PRIVATE>
     ] if ;
 
 : number>digits ( n -- seq )
-    [ dup 0 = not ] [ 10 /mod ] produce reverse nip ;
+    [ dup 0 = not ] [ 10 /mod ] produce reverse! nip ;
 
 : number-length ( n -- m )
     abs [