fork download
  1. ; homework
  2.  
  3. (define range
  4. (case-lambda
  5. ((stop) (range 0 stop (if (negative? stop) -1 1)))
  6. ((start stop) (range start stop (if (< start stop) 1 -1)))
  7. ((start stop step)
  8. (let ((le? (if (negative? step) >= <=)))
  9. (let loop ((x start) (xs (list)))
  10. (if (le? stop x) (reverse xs)
  11. (loop (+ x step) (cons x xs))))))
  12. (else (error 'range "too many arguments"))))
  13.  
  14. (define (rept n x)
  15. (map (lambda (_) x) (range n)))
  16.  
  17. (define (f n c)
  18. (let ((q (quotient c n))
  19. (r (remainder c n)))
  20. (append (rept r (+ q 1))
  21. (rept (- n r) q))))
  22.  
  23. (display (f 7 26))
Success #stdin #stdout 0.01s 8176KB
stdin
Standard input is empty
stdout
(4 4 4 4 4 3 3)