Problem 34 » 履歴 » バージョン 2
Noppi, 2024/01/13 14:57
1 | 1 | Noppi | [ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]] |
---|---|---|---|
2 | # [[Problem 34]] |
||
3 | |||
4 | ## Digit Factorials |
||
5 | $145$ is a curious number, as $1! + 4! + 5! = 1 + 24 + 120 = 145$. |
||
6 | |||
7 | Find the sum of all numbers which are equal to the sum of the factorial of their digits. |
||
8 | |||
9 | Note: As $1! = 1$ and $2! = 2$ are not sums they are not included. |
||
10 | |||
11 | ## 桁の階乗 |
||
12 | 145は面白い数である. 1! + 4! + 5! = 1 + 24 + 120 = 145となる. |
||
13 | |||
14 | 各桁の数の階乗の和が自分自身と一致するような数の和を求めよ. |
||
15 | |||
16 | **注:** 1! = 1 と 2! = 2 は総和に含めてはならない. |
||
17 | |||
18 | ```scheme |
||
19 | 2 | Noppi | (import (scheme base) |
20 | (gauche base)) |
||
21 | |||
22 | (define (digit-factorial-num n) |
||
23 | (fold (^[n result] |
||
24 | (+ result |
||
25 | (apply * (iota n 1)))) |
||
26 | 0 |
||
27 | (map digit->integer |
||
28 | (string->list (number->string n))))) |
||
29 | |||
30 | (define digit-factorials |
||
31 | (fold (^[n lis] |
||
32 | (if (= n (digit-factorial-num n)) |
||
33 | (cons n lis) |
||
34 | lis)) |
||
35 | '() |
||
36 | ; 9! * 7 = 2540160 |
||
37 | ; 9! * 8 = 2903040 |
||
38 | ; のため、3 ~ 2540160 まで求めれば良い |
||
39 | (iota 2540158 3))) |
||
40 | |||
41 | (define answer-34 |
||
42 | (apply + digit-factorials)) |
||
43 | |||
44 | (format #t "34: ~d~%" answer-34) |
||
45 | 1 | Noppi | ``` |