From a454b2e38414bb61fb5dc5b8c91e8bc64f72fcf1 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Fri, 31 Aug 2012 11:04:12 -0700 Subject: [PATCH] math.extras: adding moving-count. --- extra/math/extras/extras-tests.factor | 4 +++- extra/math/extras/extras.factor | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/extra/math/extras/extras-tests.factor b/extra/math/extras/extras-tests.factor index fe797d916e..1f979ffaa0 100644 --- a/extra/math/extras/extras-tests.factor +++ b/extra/math/extras/extras-tests.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2012 John Benediktsson ! See http://factorcode.org/license.txt for BSD license -USING: math.extras math.ranges tools.test ; +USING: math math.extras math.ranges tools.test ; IN: math.extras.test @@ -21,6 +21,8 @@ IN: math.extras.test { { 2 5 5 4 3 } } [ { 1 2 5 6 1 4 3 } 3 moving-median ] unit-test +{ { 2 1 1 2 1 1 } } [ { 1 1 2 3 5 8 13 } 2 [ odd? ] moving-count ] unit-test + { { } } [ { 0 0 } nonzero ] unit-test { { 1 2 3 } } [ { 0 1 0 2 0 3 0 } nonzero ] unit-test diff --git a/extra/math/extras/extras.factor b/extra/math/extras/extras.factor index 5d48e35181..556549e3b9 100644 --- a/extra/math/extras/extras.factor +++ b/extra/math/extras/extras.factor @@ -105,6 +105,9 @@ PRIVATE> : moving-sum ( u n -- v ) [ sum ] map ; +: moving-count ( ... u n quot: ( ... elt -- ... ? ) -- ... v ) + [ ] [ [ count ] curry map ] bi* ; inline + : nonzero ( seq -- seq' ) [ zero? not ] filter ;