simple_moving_average_oo.sf 433 B

12345678910111213141516171819202122
  1. #!/usr/bin/ruby
  2. class sma_generator(period, list=[], sum=0) {
  3. method SMA(number) {
  4. list.append(number)
  5. sum += number
  6. list.len > period && (
  7. sum -= list.shift;
  8. )
  9. return (sum / list.len)
  10. }
  11. }
  12. var ma3 = sma_generator(3)
  13. var ma5 = sma_generator(5)
  14. for num in (1..^6, 6^..1) {
  15. printf("Next number = %d, SMA_3 = %.3f, SMA_5 = %.1f\n",
  16. num, ma3.SMA(num), ma5.SMA(num))
  17. }