Averages/Simple moving average: Difference between revisions
Content added Content deleted
(Complete task for Racket) |
|||
Line 2,347: | Line 2,347: | ||
moving.average(8) # 2 |
moving.average(8) # 2 |
||
moving.average(7) # 4</lang> |
moving.average(7) # 4</lang> |
||
=={{header|Racket}}== |
|||
<lang Racket>#lang racket |
|||
(require data/queue) |
|||
(define (simple-moving-average period) |
|||
(define queue (make-queue)) |
|||
(define sum 0.0) |
|||
(lambda (x) |
|||
(enqueue! queue x) |
|||
(set! sum (+ sum x)) |
|||
(when (> (queue-length queue) period) |
|||
(set! sum (- sum (dequeue! queue)))) |
|||
(/ sum (queue-length queue)))) |
|||
;; Tests |
|||
(define sma3 (simple-moving-average 3)) |
|||
(define sma5 (simple-moving-average 5)) |
|||
(for/lists (lst1 lst2) |
|||
([i '(1 2 3 4 5 5 4 3 2 1)]) |
|||
(values (sma3 i) (sma5 i))) |
|||
</lang> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |