; school awards
(define (sum xs) (apply + xs))
(define (award days)
(if (= days 1) 3
(let loop ((xs (list 4 2 1)) (days days))
(if (< 2 days)
(loop (cons (+ (car xs) (cadr xs) (caddr xs)) xs) (- days 1))
(+ (car xs) (sum (map * (cdr xs) (reverse (cdr xs)))))))))
(do ((n 1 (+ n 1))) ((< 20 n))
(display n) (display #\tab)
(display (award n)) (newline))
OyBzY2hvb2wgYXdhcmRzCgooZGVmaW5lIChzdW0geHMpIChhcHBseSArIHhzKSkKCihkZWZpbmUgKGF3YXJkIGRheXMpCiAgKGlmICg9IGRheXMgMSkgMwogICAgKGxldCBsb29wICgoeHMgKGxpc3QgNCAyIDEpKSAoZGF5cyBkYXlzKSkKICAgICAgKGlmICg8IDIgZGF5cykKICAgICAgICAgIChsb29wIChjb25zICgrIChjYXIgeHMpIChjYWRyIHhzKSAoY2FkZHIgeHMpKSB4cykgKC0gZGF5cyAxKSkKICAgICAgICAgICgrIChjYXIgeHMpIChzdW0gKG1hcCAqIChjZHIgeHMpIChyZXZlcnNlIChjZHIgeHMpKSkpKSkpKSkKCihkbyAoKG4gMSAoKyBuIDEpKSkgKCg8IDIwIG4pKQogIChkaXNwbGF5IG4pIChkaXNwbGF5ICNcdGFiKQogIChkaXNwbGF5IChhd2FyZCBuKSkgKG5ld2xpbmUpKQ==