操作
Problem 9 » 履歴 » リビジョン 4
« 前 |
リビジョン 4/6
(差分)
| 次 »
Noppi, 2023/12/28 03:01
Problem 9¶
Special Pythagorean Triplet¶
A Pythagorean triplet is a set of three natural numbers, $a \lt b \lt c$, for which,
$$a^2 + b^2 = c^2.$$
For example, $3^2 + 4^2 = 9 + 16 = 25 = 5^2$.
There exists exactly one Pythagorean triplet for which $a + b + c = 1000$.
Find the product $abc$.
特別なピタゴラス数¶
ピタゴラス数(ピタゴラスの定理を満たす自然数)とは a < b < c で以下の式を満たす数の組である.
$$a^2 + b^2 = c^2.$$
例えば, $3^2 + 4^2 = 9 + 16 = 25 = 5^2$ である.
a + b + c = 1000 となるピタゴラスの三つ組が一つだけ存在する.
これらの積 abc を計算しなさい.
#!r6rs
#!chezscheme
(import (chezscheme))
(define sum-1000-triplets
(let loop1 ([a 1] [result '()])
(if (< 333 a)
result
(let loop2 ([b a] [result result])
(if (< 499 b)
(loop1 (add1 a) result)
(let ([c (- 1000 a b)])
(loop2 (add1 b) (cons `(,a ,b ,c) result))))))))
(define (pythagorean? a b c)
(= (+ (expt a 2) (expt b 2))
(expt c 2)))
(define pythagorean-triplets
(filter
(lambda (lis)
(apply pythagorean? lis))
sum-1000-triplets))
(assert (= (length pythagorean-triplets) 1))
(define answer-9
(apply * (car pythagorean-triplets)))
(printf "9: ~D~%" answer-9)
Noppi が2023/12/28に更新 · 4件の履歴