;; e17
(define (ones x)
(cond ((= x 0) 0)
((= x 1) 3)
((= x 2) 3)
((= x 3) 5)
((= x 4) 4)
((= x 5) 4)
((= x 6) 3)
((= x 7) 5)
((= x 8) 5)
((= x 9) 4)
((= x 10) 3)
((= x 11) 6)
((= x 12) 6)
((= x 13) 8)
((= x 14) 8)
((= x 15) 7)
((= x 16) 7)
((= x 17) 9)
((= x 18) 8)
((= x 19) 8)))
(define (tens x)
(cond ((= x 0) 0)
((= x 2) 6)
((= x 3) 6)
((= x 4) 5)
((= x 5) 5)
((= x 6) 5)
((= x 7) 7)
((= x 8) 6)
((= x 9) 6)))
(define (tens-sum x)
(if (< x 20)
(ones x)
(let ((lst (num->list x)))
(if (= (list->num (cdr lst)) 0)
(tens (car lst))
(+ (tens (car lst)) (ones (car (cdr lst))))))))
(define (hundreds-sum x)
(if (< x 100)
(tens-sum x)
(let* ((lst (num->list x))
(lst2 (list->num (cdr lst))))
(if (= lst2 0)
(+ (ones (car lst)) 7)
(+ (+ (ones (car lst)) 10) (tens-sum (list->num (cdr lst))))))))
(define (e17 x)
(if (< x 1)
'()
(cons (hundreds-sum x) (e17 (- x 1)))))