2008-08-01から1ヶ月間の記事一覧

problem 37

Problem 37 - Project Eulerd:id:mtsuyugu:20080815:1218805119 の prime.scm を利用しています。結構時間がかかりました。 (use srfi-1) (load "./prime.scm") (define (keta n) (let loop ((n n) (i 0)) (if (= n 0) i (loop (quotient n 10) (+ i 1))))) …

problem 12

Problem 12 - Project Euler約数が 500 以上ある最少の数を求める問題です。d:id:mtsuyugu:20080815:1218805119 の prime.scm を利用しています。 (load "./prime.scm") (define (tri n) (/ (* n (+ n 1)) 2)) (define (p12) (let loop ((i 2)) (let* ((tri …

素数関連のプログラム

素数関連の問題は次の関数群を使うことにしました。prime.scm とでもしておきます。 (use util.stream) (define divisible? (lambda (n d) (= (modulo n d) 0))) (define square (lambda (x) (* x x))) ; n 以上の整数ストリーム (define (integers-starting…

problem 32

Problem 32 - Project Euler39*186 = 7254 のように被乗数、乗数、積をつなげた 9 桁の数がパンデジタル数になる、積の和を求める問題。総当たりで解きました。9 桁のパンデジタル数に 2 カ所切り込みを入れて 3 つの数を作り、初めの 2 つの数の積が 3 つめ…

problem 39

三角形の周辺長が p(cartesian-product を使って総当たりでチェックしているために時間はかかりますが答えは求まります。 (use srfi-1) (use util.combinations) (define (square x) (* x x)) (define (right-angle? t) (= (+ (square (car t)) (square (cad…

problem 63

Problem 67 - Project Eulerx^n が n 桁の数になるような x はいくつあるかという問題。 10^n は n+1 桁の数だから n がどんな値であれ x が 10 未満は明らかです。あとは 9^n ですら n-1 桁になるような n が見つかるまで n をひとつずつ増やして題意を満た…

problem 79

Problem 79 - Project Euler問題の本質は、集合の要素間の部分的な順序関係が複数与えられたときに要素全体の順序を見つける問題です。これを解くのはトポロジカルソートです。とはいっても、この問題を解くまでトポロジカルソートについては名前と何をする…

problem 31

Problem 31 - Project Euler金額が 1, 2, 5, 10, 20, 50, 100, 200 のコインがあるときに 200 の作り方は何通りあるかという問題です。 (use srfi-1) (define kinds (list 200 100 50 20 10 5 2 1)) ; k 以下のコインを使って n を作る方法は何通りあるか( …

problem 59

Problem 59 - Project Eulerキーと平文との xor を取ることで作成された暗号をブルートフォースで解く問題です。キーは小文字のアルファベット 3 文字を平文の長さだけ繰り返したものです。 (use srfi-1) (use util.combinations) (define encrypted (list 7…

problem 33

Problem 33 - Project Euler49/98 は 1/2 ですが、49/98 の 9 を消しても 4/8 = 1/2 になるという面白い性質を持っています。問題 33 は二桁の分母分子からなる 1 未満の分数で先の例のような分数をすべてかけたときの分母の値はいくつか? というものです。…

problem 81

Problem 81 - Project Euler80*80 の行列の左上から右下まで要素を辿っていったときの経路となった要素の和が最少になるときの値はいくつかを求める問題です。各要素の値を、ひとつ上とひとつ右の要素の値を比べて小さい方の値と自分自身の値の和に置き換え…

problem 99

Problem 99 - Project Euler1000 個ある 基数とべき数のペア(ファイルの各行にコンマ区切りで列挙されている)からべき乗数のうち、最大になるものは何番目かという問題です。基数、べき数ともに大きな数なので、べき乗数で比較せずに対数で比較します。比…

problem 57

Problem 57 - Project Euler2 の平方根を連分数で近似するとき、 1000 段までの近似値のなかで、分子の桁数が分母の桁数より多いものはいくつあるかという問題です。初めは桁数を求めるために (floor (+ 1 (/ (log n) (log 10))) としてましたが、n = 1000 …

problem 53

Problem 53 - Project EulernCr ( 1 ≤ n ≥ 100, 1 ≤ r ≤ n ) で 1,000,000 を超えるものはいくつあるかという問題。n と r で 2 重ループにして足していけば良いだけです。こういう問題を loop を使わずに解けるようになりました。 (use srfi-1) ; permutati…