problem 8

Problem 8 - Project Euler

連続する 5 つの数字の積のなかから最大のモノを見つける問題です。

(define digit1000 (map digit->integer (string->list "731671765313306249192....")))

(define (p8 digit1000)
  (apply max (map * digit1000 (cdr digit1000)
                    (cddr digit1000) (cdddr digit1000) (cddddr digit1000))))

(display (p8 digit1000))

初めは apply せずに

(max (map * ...)

と書いていたらエラーがでました。一瞬なぜエラーがでるのか分からなかったが max の引数はリストじゃないことに気づいて、さらに d:id:mtsuyugu:20080610:213107207 でやったことを思い出し apply を付けるように修正しました。

↑本当は個別記事に TB したいんだけど id TB ではできないの?できました。

初めて apply の使いどころに出くわした気がします。