Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.55 KB | None | 0 0
  1. -- emit o numbers in an arithmetic series stepping by -r such that the sum
  2. -- of the output numbers is n
  3. -- assumes o > 0
  4. allen :: Double -> Double -> Int -> [Double]
  5. allen n r o = take o [base,base-r..] where
  6. z = fromIntegral o
  7. base = n/z + (z-1)*r/2
  8.  
  9. Examples:
  10.  
  11. *Main> allen 33 5 1
  12. [33.0]
  13. *Main> allen 33 5 2
  14. [19.0,14.0]
  15. *Main> allen 33 5 3
  16. [16.0,11.0,6.0]
  17. *Main> allen 33 5 4
  18. [15.75,10.75,5.75,0.75]
  19. *Main> allen 33 5 5
  20. [16.6,11.6,6.6,1.6,-3.4]
  21. *Main> allen 33 1 2
  22. [17.0,16.0]
  23. *Main> allen 33 1 3
  24. [12.0,11.0,10.0]
  25. *Main> allen 33 1 4
  26. [9.75,8.75,7.75,6.75]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement