fork download
  1. ; sum square digits sequence
  2.  
  3. (define (square x) (* x x))
  4.  
  5. (define (digits n . args)
  6. (let ((b (if (null? args) 10 (car args))))
  7. (let loop ((n n) (d '()))
  8. (if (zero? n) d
  9. (loop (quotient n b)
  10. (cons (modulo n b) d))))))
  11.  
  12. (define (sum xs) (apply + xs))
  13.  
  14. (define (ssds n) ; sum square digits sequence
  15. (let loop ((n n) (ns (list)))
  16. (if (or (= n 1) (member n '(4 16 37 58 89 145 42 20)))
  17. (reverse (cons n ns))
  18. (let ((x (sum (map square (digits n)))))
  19. (loop x (cons n ns))))))
  20.  
  21. (display (ssds 19)) (newline)
  22. (display (ssds 18)) (newline)
Success #stdin #stdout 0.04s 8224KB
stdin
Standard input is empty
stdout
(19 82 68 100 1)
(18 65 61 37)