math.combinatorics: minor performance improvements.

db4
John Benediktsson 2012-04-24 18:42:34 -07:00
parent fc50417e43
commit 817b45ee03
2 changed files with 5 additions and 5 deletions

View 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 ;

View 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 [