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

Problem 24 - 順列(2)

前回の教訓を元に攻めていく。Problem 24 - PukiWiki 順列とはモノの順番付きの並びのことである. たとえば, 3124は数1, 2, 3, 4の一つの順列である. すべての順列を数の大小でまたは辞書式に並べたものを辞書順と呼ぶ. 0と1と2の順列を辞書順に並べると 012…

Problem 24 - 順列(1)

Vimごと落ちた。失敗。Problem 24 - PukiWiki (define (permutations s) (define (flatmap proc seq) (apply append (map proc seq))) (define (remove-1 item sequence) (cond ((null? sequence) '()) ((equal? (car sequence) item) (cdr sequence)) (else…

Problem 34 - 階乗してもいっしょ

ガリガリいっちゃうよ。Problem 34 - Project Euler 145 is a curious number, as 1! + 4! + 5! = 1 + 24 + 120 = 145.Find the sum of all numbers which are equal to the sum of the factorial of their digits.Note: as 1! = 1 and 2! = 2 are not sums …

Problem 36 - 10進数でも2進数でも回文数

また翻訳してみる。Problem 36 - Project Euler The decimal number, 585 = 1001001001_2 (binary), is palindromic in both bases.Find the sum of all numbers, less than one million, which are palindromic in base 10 and base 2.(Please note that th…

Problem 30 - 各桁をn乗した和

求めてみたけど、まだ不明な点がある。Problem 30 - PukiWiki 驚くべきことに, 各桁を4乗した和が元の数と一致する数は3つしかない. * 1634 = 1^4 + 6^4 + 3^4 + 4^4 * 8208 = 8^4 + 2^4 + 0^4 + 8^4 * 9474 = 9^4 + 4^4 + 7^4 + 4^4ただし, 1=1^4は含まない…

Problem 21 - 友愛数

オイラーは60余りの友愛数を求めたらしい。僕も挑戦するぞ(嘘 d(n)をnの真の約数の和と定義する。(真の約数とはn以外の約数のことである。) もし、d(a) = b かつ d(b) = a を満たすとき、aとbは友愛数(親和数)であるという。例えば、220の約数は1, 2, 4…

Problem 22 - 名前のスコア

ちょっとおサボリしちゃった。Problem 22 - PukiWiki 5000個以上の名前が書かれている46Kのテキストファイル names.txt を用いる. まずアルファベット順にソートせよ.のち, 各名前についてアルファベットに値を割り振り, リスト中の出現順の数と掛け合わせる…

Problem 28 - 対角線の和

この問題は面白かった。Problem 28 - PukiWiki 1から初めて右方向に進み時計回りに数字を増やしていき, 5×5の螺旋が以下のように生成される: 21 22 23 24 25 20 07 08 09 10 19 06 01 02 11 18 05 04 03 12 17 16 15 14 13対角線上の数字の合計はどちらも101…

Problem 19 - 曜日計算

だんだん難しくなってきた。Problem 19 - PukiWiki 次の情報が与えられている。 * 1900年1月1日は月曜日である。 * 9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。 * 2月は28日まであるが、うるう年のときは29日である。 * うるう年は…

Problem 20 - 100!

100の階乗Problem 20 - PukiWiki n × (n - 1) × ... × 3 × 2 × 1 を n! と表す。100! の各桁の数字の合計を求めよ。 簡単。 前に作ったユーティリティを利用して、 (define (number->list n) (define (iter acc n) (let ((q (quotient n 10)) (m (cons (modu…

Problem 25 - フィボナッチ1000桁

みんな大好きフィボナッチ。Problem 25 - PukiWiki フィボナッチ数列は以下の漸化式で定義される: Fn = Fn-1 + Fn-2, ただし F1 = 1, F2 = 1.最初の12項は以下である. * F1 = 1 * F2 = 1 * F3 = 2 * F4 = 3 * F5 = 5 * F6 = 8 * F7 = 13 * F8 = 21 * F9 = 34…

Problem 18 - パスカルの三角形な順路問題

順路問題。Problem 18 - PukiWiki 以下の三角形の頂点から下まで移動するとき、その数値の合計の最大値は23になる。 3 7 5 2 4 6 8 5 9 3この例では 3 + 7 + 4 + 9 = 23以下の三角形を頂点から下まで移動するとき、その最大の合計値を求めよ。 75 95 64 17 4…

Problem 48 - 自分で翻訳してみる

簡単な問題からやってこう。48が簡単そうだけど、翻訳が無いので、自分で翻訳。Problem 48 - Project Euler 次の式は、1^1 + 2^2 + 3^3 + ... + 10^10 = 10405071317 である。 では、1^1 + 2^2 + 3^3 + ... + 1000^1000 の下10桁を求めよ。 ま、翻訳するほど…

Problem 16 - 2の1000乗

簡単!Problem 16 - PukiWiki 2^15 = 32768 であり、これの各数字の合計は 3 + 2 + 7 + 6 + 8 = 26 となる。同様にして、2^1000 の各数字の合計を求めよ。 はいはい。 (define (digit->integer c) (if (char-numeric? c) (- (char->integer c) (char->intege…

Problem 15 - マス目のルート

プロジェクトオイラーにハマってます。ステキな問題が多くてイイ!!Problem 15 - PukiWiki 2 × 2 のマス目の左上からスタートした場合、引き返しなしで右下にいくルートは 6 つある。 では、20 × 20 のマス目ではいくつのルートがあるか。 これは見たことが…

Problem 14 - コラッツ問題

未知との遭遇。Problem 14 - PukiWiki 正の整数に以下の式で繰り返し生成する数列を定義する。 n → n/2 (n が偶数) n → 3n + 1 (n が奇数)13からはじめるとこの数列は以下のようになる。 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 113から1まで10個の項にな…

The GNU MP Bignum Library

gcc

オイラー見てたら、多倍長演算ライブラリ発見。The GNU MP Bignum Library #include <gmp.h> int main(void) { mpz_t a, b, c; mpz_init_set_str(a, "1234567890123456789012345678901234567890", 0); mpz_init_set_str(b, "12345678901234567890123456789012345678</gmp.h>…

Problem 13

たまには違う言語もいいよね。Problem 13 - PukiWiki 以下の50桁の数字100個の総和の上位10桁を求めよ。37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 7432498619952474105947423330951305812372…

Problem 12

素数の時間です(謎Problem 12 - PukiWiki 三角数の数列は自然数の和で表わされ、7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。三角数の最初の10項は 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...となる。最初の7項について、その約数を列挙すると…

Problem 11

これは・・・Link: Project Euler 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 ... 上の 20 × 20 の数字のなか、赤くマークされた数字の積は 26 × 63 × 78 × 14 = 1788696 となる。上下左右斜めのいずれかの方向で連続する4つの数字の積の…

Project Euler参戦

遅ればせながら本家にレジストした。Project Euler凄い人いっぱい。みんなやろうぜ。

Problem 10

これは無理だろう。 10以下の素数の和は2 + 3 + 5 + 7 = 17である. 200万以下の全ての素数の和を計算しなさい. 20万でひぃひぃ言ってたのに200万は相当無理〜。 課題としては、 新たなアルゴリズムをちゃんと覚える。 僕のCPUはデュアルコアなので、並列演算…

Problem 9

三平方の定理。懐かしいな。 ピタゴラスの三つ組(ピタゴラスの定理を満たす整数)とはa うぅん。 考えてみたけど、力ずくで解く方法しか思いつかず。 (define (problem9 n) (define (square x) (* x x)) (define (iter a b c) (cond ((= (square c) (+ (squar…

Problem 8

うっほ。Problem 8 - PukiWiki 以下の1000桁の数字から5つの連続する数字を取り出してその積を計算する。そのような積の中で最大のものの値はいくらか73167176531330624919225119674426574742355349194934 ... ちと面倒そうな問題。 文字列を数値のリストに…

Problem 7

エラトステネスの篩の限界を見た。Problem 7 - PukiWiki 素数を小さい方から6つ並べると 2, 3, 5, 7, 11, 13 であり、6番目の素数は 13 である。10001 番目の素数を求めよ。 これは相当キツい。 前に作った奴を利用してっと。 (define (primers n) (define (…

Problem 6

これは簡単Problem 6 - PukiWiki 最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。 1² + 2² + ... + 10² = 385 (1 + 2 + ... + 10)² = 3025これらの数の差は 3025 - 385 = 2640 となる。同様にして、最初の100個の自然数について和の…

Problem 5

ぬはぁ解けたぁ!!すげー嬉しい。Problem 5 - PukiWiki 2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。 ちょっと…

Problem 4

今日もやろう。Problem 4 - PukiWiki 左右どちらから読んでも同じ値になる数を回文数という。 2桁の数の積で表される回文数のうち、最大のものは 9009 = 91 × 99 である。では、3桁の数の積で表される回文数のうち最大のものはいくらになるか。 n桁 * n桁の…

Google Toolbarのマウスオーバー辞書の言語変更

英語版のGoogle Toolbarを使ってるので、マウスオーバー辞書がスペイン語?になってしまう。about:config開いて、新規文字列で、google.toolbar.autotranslate_to_langをjaにして再起動。おぉ。辞書が日本語になった。 追記 キーの値が間違ってた。スマソ。

Problem 3

もう一問がんばる。Problem 3 - PukiWiki 13195 の素因数は 5、7、13、29 である。600851475143 の素因数のうち最大のものを求めよ。 素因数分解か!! 何も考えずに。ただひたすら。 (define (problem3 n) (define (iter m x l) (cond ((zero? (modulo m x)) …