Problem 4 » 履歴 » バージョン 3
Noppi, 2023/12/27 04:45
| 1 | 1 | Noppi | [ホーム](https://redmine.noppi.jp) - [[Wiki|Project Euler]] |
|---|---|---|---|
| 2 | # [[Problem 4]] |
||
| 3 | |||
| 4 | ```scheme |
||
| 5 | #!r6rs |
||
| 6 | #!chezscheme |
||
| 7 | |||
| 8 | (import (chezscheme)) |
||
| 9 | |||
| 10 | (define (RotationNumber? num) |
||
| 11 | 3 | Noppi | (let* ([num-string (number->string num)] |
| 12 | [str-length (string-length num-string)] |
||
| 13 | [count (div str-length 2)]) |
||
| 14 | (let loop ([index 0]) |
||
| 15 | 1 | Noppi | (cond |
| 16 | [(<= count index) #t] |
||
| 17 | 3 | Noppi | [(equal? |
| 18 | (string-ref num-string index) |
||
| 19 | (string-ref num-string (- str-length 1 index))) |
||
| 20 | 1 | Noppi | (loop (add1 index))] |
| 21 | 2 | Noppi | [else #f])))) |
| 22 | 1 | Noppi | |
| 23 | (define answer-4 |
||
| 24 | 3 | Noppi | (let loop1 ([num1 100] [result 0]) |
| 25 | 1 | Noppi | (if (< 999 num1) |
| 26 | result |
||
| 27 | 3 | Noppi | (let loop2 ([num2 100] [result result]) |
| 28 | 1 | Noppi | (if (< 999 num2) |
| 29 | (loop1 (add1 num1) result) |
||
| 30 | 3 | Noppi | (let ([num (* num1 num2)]) |
| 31 | 1 | Noppi | (if (RotationNumber? num) |
| 32 | (loop2 (add1 num2) (max result num)) |
||
| 33 | (loop2 (add1 num2) result)))))))) |
||
| 34 | |||
| 35 | (printf "4: ~D~%" answer-4) |
||
| 36 | ``` |