Paste: sma without subgroups
Author: | glguy |
Mode: | factor |
Date: | Sat, 11 Apr 2009 06:22:16 |
Plain Text |
IN: sma
USING: kernel sequences math arrays math.ranges math.order ;
: partial-sums ( seq -- newseq )
0 [ + ] accumulate
swap suffix 1 tail ;
: differences ( seq seq -- newseq )
[ - ] 2map ;
: prepad ( seq n elt -- newseq )
<array> prepend ;
: sliding-partial-sums ( seq n -- newseq )
dupd 0 prepad differences partial-sums ;
: plateau ( len n -- seq )
[ min [1,b] ]
[ - 0 max ]
[ nip <array> ] 2tri append ;
: sma ( seq n -- newseq )
[ sliding-partial-sums ]
[ [ length ] dip plateau ] 2bi
[ / ] 2map ;
Author: | glguy |
Mode: | factor |
Date: | Sun, 12 Apr 2009 06:49:51 |
Plain Text |
IN: sma
USING: arrays kernel math math.order math.ranges math.vectors sequences ;
: partial-sums ( seq -- newseq )
0 [ + ] accumulate swap suffix rest ;
: sliding-partial-sums ( seq n -- newseq )
dupd 0 <array> prepend
v- partial-sums ;
: plateau ( len n -- seq )
[ min [1,b] ]
[ - 0 max ]
[ nip <array> ] 2tri append ;
: sma ( seq n -- newseq )
[ sliding-partial-sums ]
[ [ length ] dip plateau ] 2bi v/ ;
Author: | glguy |
Mode: | factor |
Date: | Sun, 12 Apr 2009 07:05:04 |
Plain Text |
IN: sma
USING: arrays kernel math math.order math.ranges math.vectors sequences ;
: partial-sums ( seq -- newseq )
0 [ + ] accumulate swap suffix rest ;
: sliding-partial-sums ( seq n -- newseq )
dupd 0 <array> prepend v- partial-sums ;
: plateau ( len n -- seq )
[ min [1,b] ] [ [ append ] padding ] 2bi ;
: sma ( seq n -- newseq )
[ sliding-partial-sums ]
[ [ length ] dip plateau ] 2bi v/ ;
New Annotation