RosettaCodeData/Task/Happy-numbers/Racket/happy-numbers.rkt
Ingy döt Net 6f050a029e update
2013-06-05 21:47:54 +00:00

22 lines
626 B
Racket

#lang racket
(define (sum-of-squared-digits number (result 0))
(if (zero? number)
result
(sum-of-squared-digits (quotient number 10)
(+ result (expt (remainder number 10) 2)))))
(define (happy-number? number (seen null))
(define next (sum-of-squared-digits number))
(cond ((= 1 next)
#t)
((memq next seen)
#f)
(else
(happy-number? next (cons number seen)))))
(define (get-happys max)
(for/list ((x (in-range max))
#:when (happy-number? x))
x))
(display (take (get-happys 100) 8)) ;displays (1 7 10 13 19 23 28 31)