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

problem 52

Problem 52 - Project Eulerx, 2x, 3x, 4x, 5x, 6x が全て同じ数字の組み合わせになる正数 x を求める問題です。 (use srfi-1) (use util.stream) (define integer (stream-cons 1 (stream-map (pa$ + 1) integer))) ; 14235 -> '(1 2 3 4 5) (define (digit…

problem 26

Problem 26 - Project Euler循環小数 1/d (1

problem 56

Problem 56 - Project Eulera 100^100 が普通に計算できるので簡単です。 ; 1234 -> 10 (define (sum-digits num) (let loop ((r 0) (n num)) (if (= n 0) r (loop (+ r (modulo n 10)) (quotient n 10))))) (define (p56) (let loop ((a 1) (b 1) (r 0)) (i…

problem 55

Problem 55 - Project Eulerまた、簡単そうな問題を見つけました。10000未満の数で、回文数と元の数を足すことを50回繰り返しても回文数があらわれないような元の数はいくつあるかという問題。問題の詳細は日本語訳 [http:z.sakura.ne.jp/projecteuler/index…

problem 28

Problem 28 - Project Euler 21 22 23 24 25 20 7 8 9 10 19 6 1 2 11 18 5 4 3 12 17 16 15 14 13こういう風に正の整数を螺旋状に 1001×1001 のサイズまで並べていったとき対角線上にある数の合計を求める問題。まず n (n>1) 週目の数字の並びを考えてみる…

problem 42

Problem 42 - Project Euler[id:mtsuyugu:20080707:1215444841] で過去に解いた problem 22 とよく似た問題です。 アルファベットに A = 1, B = 2 ... と数を割り当てたものの合計が "SKY" = 19 + 11 + 25 = 55 のように三角数になる単語が与えられたファイ…

problem 35

Problem 35 - Project Euler1,000,000 以下の素数の中で桁を回転させてできる数字がすべて素数(ex. 197, 719, 971) である数はいくつあるかという問題です。primes.txt にはリストの形で 1,000,000 以下の素数が列挙しています。添え字が素数の要素は値が 1 …

problem 97

Problem 97 - Project Euler一気に飛んで problem 97。2,357,207 桁からなるメルセンヌ数でない素数 28433*2^7830457+1 の下 10 桁を求める問題。(expt 2 7839457) とするのではなくて、10桁を超えないように常に下10桁に対して 2 を掛けるようにはしている…

problem 7

Problem 7 - Project Euler10001 番目の素数を求める問題です。SICP でストリームを勉強してから project euler に戻ってきたときに解いていたのですが、まだ書いていませんでした。 (use util.stream) (define divisible? (lambda (n d) (= (modulo n d) 0)…

problem 45

Problem 45 - Project Euler三角数: Tn=n(n+1)/2 かつ五角数 Pn=n(3n-1)/2 かつ六角数 Hn=n(2n-1) をみたす数のうち 40755 の次の数は何かという問題です。三角数 Tn について n = 2k-1 を代入すると Tn = n(n+1)/2 = (2k-1)(2k-1+1)/2 = 2k(2k-1) = Hkが成…

problem 36

Problem 36 - Project Euler1,000,000 以下の数で 10 進数、2 進数どちらで表しても、回文になる数(ex. 585 = 1001001001) の和を求める問題。 (use srfi-1) (use srfi-13) (define (palindromic? num radix) (let1 str (number->string num radix) (string=…

problem 40

Problem 40 - Project Euler1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 ... のように正の整数の順番に並べた数列の n 番目の数を d_n としたときにd_1 * d_10 * d_100 * ... * d_1000000を求める問題。 (use srfi-1) ; 123 -> '(1 2 3) (define (number->list num) (let…

problem 48

Problem 48 - Project Euler先の問題を眺めていたらラッキー問題を見つけました。1 (use srfi-1) (define (p48) (let1 n (iota 1000 1) (modulo ;(fold (lambda (x y) (+ y (expt x x))) 0 n) ;(apply + (map (lambda (x) (expt x x)) n)) (apply + (map exp…

problem 22

Problem 22 - Project Eulerファイルに書かれた名前を数値に変換したものの重み付け総和を求める問題です。ファイル入力は初めてでしたが調べたらすぐ分かりました。他の言語と変わりません。ファイルハンドラ、ファイルポインタではなくてポートと呼ばれる…

改良

解き貯めしていたものがなくなってきたので、過去に解いたものを振り返って改良してみました。 d:id:mtsuyugu:20080528:1211984870 d:id:mtsuyugu:20080705:1215227594 総和を求めるのに fold でもループでもなく apply を使ってみました。

problem 34

Problem 34 - Project Euler各桁の数字の階乗の和ともとの数が等しい数の総和を求める問題。 (define (fact n) (define ht (make-hash-table)) (if (hash-table-exists? ht n) (hash-table-get ht n) (let loop ((i n) (m 1)) (if (= i 0) (begin (hash-tabl…

problem 24

Problem 24 - Project Euler0 から 9 までの数字の順列を辞書順に並べたとき、1000000 番目の数字は何か?という問題。確率統計にありがちな問題です。 pen and paper で 考えてたら紙と鉛筆で解いてしまった。以下その時のメモ: permutation-table: 9! = 3…

problem 30

Problem 30 - Project Euler各桁の数字を5乗したものの和がもとの数と等しくなる数の合計を求めるという問題です。ループを使わずに fold, map, filter などの高階関数のみで解いてみました。 (list 1 10 100 1000 10000 100000 1000000) で済むところを (ma…