fork download
  1. ; school awards
  2.  
  3. (define (sum xs) (apply + xs))
  4.  
  5. (define (award days)
  6. (if (= days 1) 3
  7. (let loop ((xs (list 4 2 1)) (days days))
  8. (if (< 2 days)
  9. (loop (cons (+ (car xs) (cadr xs) (caddr xs)) xs) (- days 1))
  10. (+ (car xs) (sum (map * (cdr xs) (reverse (cdr xs)))))))))
  11.  
  12. (do ((n 1 (+ n 1))) ((< 20 n))
  13. (display n) (display #\tab)
  14. (display (award n)) (newline))
Success #stdin #stdout 0s 7272KB
stdin
Standard input is empty
stdout
1	3
2	8
3	19
4	43
5	94
6	200
7	418
8	861
9	1753
10	3536
11	7077
12	14071
13	27820
14	54736
15	107236
16	209305
17	407167
18	789720
19	1527607
20	2947811