problem 55

Problem 55 - Project Euler

また、簡単そうな問題を見つけました。10000未満の数で、回文数と元の数を足すことを50回繰り返しても回文数があらわれないような元の数はいくつあるかという問題。

問題の詳細は日本語訳 [http:z.sakura.ne.jp/projecteuler/index.php?Problem%2055:e] をどうぞ。

さくさくっと。パズルを解いたみたいでスカッとします。

(use srfi-1)
(use srfi-13)

(define (palindromic num)
  (string->number (string-reverse (number->string num))))

(define (palindromic? num)
  (let1 str (number->string num)
        (string=? str (string-reverse str))))

(define (lychrel? num)
  (let loop ((i 0)
             (n num))
    (let1 next (+ n (palindromic n))
          (cond ((= i 50) #f)
                ((palindromic? next) #t)
                (else (loop (+ i 1) next))))))

(define (p55)
  (length (remove lychrel? (iota 9999 1))))

(print (p55))