2005年4月

結城浩の日記

目次

2005年4月30日

池袋ジュンク堂 この記事(2005年4月30日23:19)を含む「はてなブックマーク」    

昨日は、家族で新宿・池袋にお出かけした。とても暑い。

新宿では、 OZONEのカフェでお昼を食べた。 それからThe Conran Shopに行ってうろうろ。

池袋では、 家内はIllums, 私と子供はジュンク堂へ。 池袋のジュンク堂には初めていったのですが、 あんなに大きかったんですね。もしかして、都内最大の在庫数?

といっても、結局子供に付き合って、ほとんどの時間を子供の本のところで過ごす。 ちょっとしたカーペット敷きの絵本読み+ブロック遊びスペースがあって、 靴を脱いで一緒に遊べるのです。 私が次男に本を読んであげていると、よその子も寄ってきて、じっと聞いている。 読み終わると、本を持ってきて「今度はこれを読んで!」と(よその子が)言う。 思いがけず、楽しい読み聞かせの時を持つことができました。

その後、子供たちがブロックで遊んでいるそばで、私は眠り込んでしまいました。

はじめての池袋ジュンク堂。ぐっすり眠れました。(^_^;

feedback | top

2005年4月27日

coLinuxを試す この記事(2005年4月27日21:59)を含む「はてなブックマーク」    

みやがわさんの colinux with SVKを読んでから、 coLinuxのインストールを読む。 そのうちにcoLinuxを試してみたくなる。

Cygwinを入れていないので、 dd for windowsからddのWindows版を入手し、 The bzip2 and libbzip2 official home pageからbzip2のWindows版を入手して準備しておく。 bzip2-102-x86-win32.exeは長い名前なので、bzip2.exeにリネームしてPATHが通っているところに置く。

Cooperative Linuxへ行って、coLinux-0.6.2.exeとDebian-3.0r0.ext3.1gb.bz2を入手。 ルートイメージはcoLinuxのインストーラ経由で持ってくることもできるみたい。 まあいいや。

あとは、 coLinuxのインストールを読みながら進む。 一箇所だけ、

dd if=/dev/zero of=swap.img bs=1M count=256

で、うっ、と詰まる。Windowsに/dev/zeroはないなあ。 if=nulとやったら、0バイトになっちゃうし。うう。 ええい、どうせスワップにするんだから、

dd if=root.img of=swap.img bs=1M count=256

でいいよね。だめ?

あとは、default.colinux.xmlを修正してから、 colinux-daemon.exe を動かす。…動かん。 メッセージを読むと、デフォルト設定ファイルは、default.colinux.xmlではなくcolinux.default.xmlらしい。 なので、-cオプションを使って起動。

colinux-daemon.exe -c default.colinux.xml

これでlogin:プロンプトが出る。rootでログインして、lsする。おお、Linuxじゃん。 ここまでたった45分。先達が coLinuxのインストールというWebページを残してくださるのは何とありがたいことでしょう。

ネットワークの設定はややこしそうなので、また今度。 ネットワークの設定ができたら、apt-dist upgradeとやらをやるとよいのだろうか【誰に問うてるおれカネゴン】。

追記

notogawaさんから、

WindowsXPなら fsutil file createnew ファイル名 サイズ(10進数byte) で内容0の巨大なファイルを作成できます

という情報をいただきました。感謝。

feedback | top

RSSのアクセスはHTMLの2倍 この記事(2005年4月27日17:15)を含む「はてなブックマーク」    

統計情報をちらちら見て、この「結城浩の日記」では、 RSSに対するアクセス数は、HTMLに対するアクセス数の約2倍あることがわかりました。 ふうん。

※おおざっぱな話です。アクセス数でも、転送データ量でもだいたい同じ比率。

feedback | top

地味にお仕事 この記事(2005年4月27日10:10)を含む「はてなブックマーク」    

今日も朝から地味にお仕事。 読んで、考えて、書く。

何度も石井さんのことを思い出す。 これまでに4冊もレビューしていただき、 その都度、細やかなメールをたくさん送ってくださったのに…。

feedback | top

結城に重要なメールを送った方へ この記事(2005年4月27日00:28)を含む「はてなブックマーク」    

2005年4月26日18:00〜23:00ごろの間にサーバの不調があり、 メールが何件か紛失した可能性があります。 返事を必要とする重要なメールを結城あてに送った方は、 恐れ入りますが、再送をお願いいたします。

feedback | top

2005年4月26日

石井さんの訃報 この記事(2005年4月26日13:21)を含む「はてなブックマーク」    

先日発生したJRの脱線事故で亡くなった方の中に、 結城が大変お世話になった石井勝さんがいらしたことがわかり、 驚いています。

石井さんとは、もう何年にも渡ってメールでのお付き合いをさせていただいていました。 パターンやユニットテストについてご教示くださったり、 またA Pattern Languageの書籍を紹介してくださったのも、石井さんです。

拙著のレビューにも積極的に参加してくださり、 ついこの間も、 メールをやりとりしたばかりです(たった一ヶ月前のこと…)。

すっきりと、優しい文章をお書きになる方で、 最後にいただいたメールでは、 「いい勉強の機会を与えてくださり本当に感謝しています. またレビューのお話がありましたら声をかけてください」 と丁寧に書いてくださいました。 それなのに、こんなことになってしまい、涙が止まりません…。

石井さんのご家族や会社のみなさんも本当に大きな悲しみのうちにあることと思います。 結城も、非常に衝撃を受けており、ただ涙のうちにお祈りするばかりです。

feedback | top

打ち合わせ / CGI / 確率 この記事(2005年4月26日08:49)を含む「はてなブックマーク」    

昨晩は、編集長と今後の出版の打ち合わせ。 『プログラマの数学』はたいへん好調とのことで、 うれしいニュースをたくさんいただきました。 読者のみなさん、営業の方々、書店の方々、みなさんありがとうございます。 感謝し、主の御名をほめたたえます。

今日は、先日整理したCGIをお化粧直し(比喩)。

あ、そだそだ。 先日書いた 「解答」は、田崎先生…じゃなくて田崎さんのところで出ていた 「問題」の解答です。 2-2が1/2にならないのは、一瞬「あれ?」と思うのですが、 トランプの一組が52枚ではなく仮に「2枚である」と仮定すると納得がいきますね。

feedback | top

2005年4月25日

いまほしいもの この記事(2005年4月25日16:55)を含む「はてなブックマーク」    

いまほしいもの。

textfile.orgに書き込むと、自動的にはてなブックマークに同じ内容をミラーリングするソフト。 この日記に書き込むと、自動的にはてなダイアリーに(以下略) まあ「やればいい」んですけれどね。

feedback | top

時間と喪失について この記事(2005年4月25日16:49)を含む「はてなブックマーク」    

時間というものについて考える。 この世で生きていくうえで時間が大切であることはよくわかる。 というか、私たちは時間の経過とともに活動しているわけだから、 時間は必須である。

一方で、時間とともに私たちは変化していく。 成長し、老いていく。 できないことができるようになり、できていたことができなくなっていく。 出会いがあり、別れがある。

私たちは時間という流れの中に生きていて、 「いっぺんにすべて」を手に入れることができない。 何かを手に入れ、何かを失う。 何かを失い、何かを手に入れる。

私は、ときどき「それはなぜだろう」と思う。 どうして、得たままではなく、失っていくのだろう。 失っていかなければならないのだろう。 手にした状態のままではいられず、手放さなければならないのだろう。 私は、ときどき、そんなことを考える。

シンプルな答えは、きっと「執着するのがよくないことだから」だろう。 手に入れたものに執着する。自分の現在の状態に固執する。 それがよくないことだからこそ、手放さざるを得なくなっているのではないだろうか。

でも、もう一歩進んで「手放すことは、それ自体が喜びでもあるから」なのかもしれない、と、思う。 自分が手に入れたものを放す。 手放す。 得たものを失う。 もちろん、時と場合によるだろうけれど、 喪失も、喜びにつながるのではないか、などと思う。

音楽のことを思う。 美しい音楽。コンサート。 ささやかなフルートに始まり、目もくらむような音の大伽藍が組み立てられていく。 激しい響き、複雑な構造、予想もつかない展開。 ああ、このすばらしい音楽をいつまでも聴き続けていたい、と願う。 しかし、やがて終わりがやってくる。最後の音が消える。 それで完結。

演奏が終わることで、確かに私たちは何かを失った。 先ほどまで目の前にあった音楽は一瞬のうちに掻き消え、もうどこにもない。 けれど、けれども、その代わりに、最後の音までたどり着き、完結した喜びを得る。 静かで、深い満足。

何かを喪失しても、それが「あるべき姿」ならば、 そこには、ある種の喜びを生みはしないだろうか。

たとえ、いくぶんかの悲しみを伴うとしても。

feedback | top

ティルダ・スウィントン この記事(2005年4月25日10:24)を含む「はてなブックマーク」    

2005年の冬に公開されるナルニア国物語の映画では、 ティルダ・スウィントン(Tilda Swinton)が冬の魔女を演じるらしい。 彼女は「オーランドー」という不思議な映画でも、不思議な役どころでした。 大きく膨らんだ白いドレスを着て、 ものがごたごた置いてある狭い通路を歩くときの、 ドレスのすそをさばく仕草が素敵だったことを記憶しています。

feedback | top

2005年4月24日

ウイルスバスター この記事(2005年4月24日23:24)を含む「はてなブックマーク」    

ウイルスバスターが騒ぎになっていた模様。 うちはノートン先生なので、特に問題なかった。

feedback | top

CPAN この記事(2005年4月24日22:03)を含む「はてなブックマーク」    

CPANをながめていて、ふと思ったこと。 CPANに登録されているWiki関連モジュールをベースにして Wikiを作るというのも楽しいかも。

feedback | top

起きます この記事(2005年4月24日07:11)を含む「はてなブックマーク」    

眠っていたらこんな時間。 起きなきゃ。

みなさん、おはようございます。

feedback | top

寝ます この記事(2005年4月24日02:10)を含む「はてなブックマーク」    

Web巡回していたらこんな時間。 寝なきゃ。

みなさん、おやすみなさい。

feedback | top

2005年4月23日

解答 この記事(2005年4月23日20:35)を含む「はてなブックマーク」    

1-1は1/2, 1-2は1/2, 2-1は1/2, 2-2は26/51.

feedback | top

校正 この記事(2005年4月23日20:24)を含む「はてなブックマーク」    

C MAGAZINEから連載原稿のゲラが届いたので校正して返信。 いつも丁寧な編集をありがとうございます。>担当者さま。

feedback | top

2005年4月22日

はてなブックマーク対応 この記事(2005年4月22日18:57)を含む「はてなブックマーク」    

「はてなブックマーク」を見るだけではなく、追加するアイコンにも対応しました。 また、permalinkは単独ページのみにしました。

feedback | top

CGI / bk1 / 専用の鏡 この記事(2005年4月22日10:07)を含む「はてなブックマーク」    

今日は、ずいぶん昔に作った小さなCGIを引っ張り出してきて、ほこりを払い(比喩)、 少し整理した。シンプルに書き換えて、Subversionで管理しなおし。 Perlは、後で読み直しても何をやっているかわかりにくいので「Write Onlyな言語」と揶揄されることがある。 でも、さすがに自分が書いたコードは読める。

Webを巡回していると、bk1のリニューアルにともなって、 いろいろトラブルが起きているらしい。 「中の人」も大変そうだ。

次男が幼稚園にいく仕度をしている。洗面所で手を洗いながら、 「これ、専用の鏡なんだよ」と蛇口を指差す。 ?と思っていると、「あっちの鏡(洗面所の鏡)は高すぎてよく見えないの」と重ねて言う。 蛇口をよく見ると、よく光っている蛇口に、次男とわたしの姿が小さく映っている。

子供って、ささやかなものを見つけるのが上手ですね。

feedback | top

2005年4月21日

おかあさんだっこ この記事(2005年4月21日09:27)を含む「はてなブックマーク」    

朝は、次男を幼稚園に送っていく。 いってきます、と玄関を出た後、次男が急に思い出したように「あ、そうだ」といって引き返す。 何をするのかな、と思っていると、玄関で見送っていた家内のところに行って「おかあさん、だっこ」といってハグする。

次男はにこにこしながら戻ってきて 「あのね、《おかあさんだっこ》って、とってもあったかいんだよ。 だから、ずっとだっこしてたくなるの」と私に言う。

わたしもにっこりして、次男と手をつなぐ。

feedback | top

本当に理解するまで学ぶということ、の名前 この記事(2005年4月21日08:47)を含む「はてなブックマーク」    

昨日の 本当に理解するまで学ぶということに読者から反応がありました。 以下、許可を得て公開。

emeitchさんから

結城先生、こんにちは。

今回の日記の、「本当に理解するまで学ぶということ」は凄く感銘を受けました。 自分の頭のなかで曖昧に思い描いていたノウハウを、明瞭に書いていただいた気がします。 なんだかもやもやする感覚を、一気に払拭していただいた感じです。ありがとうございます。

今回の「白い紙を広げ、そこに自分が理解できたと思うことを再構成してみる。」や、 「自分で新しい『例』を作ってみる。」などのノウハウは、 私がこれからいろいろと「学ぶこと」を考えるための概念としても活用させていただきたと思っています。

ところで、「学ぶこと」を考えるための概念として活用していきたいのではありますが、 毎回これらを「白い紙を広げ、そこに自分が理解できたと思うことの再構成〜」 などと表現していると凄く長いので、これら概念に名前がほしいのですが、 なにか適切な名前はないでしょうか?もしよろしければ、ご教授願えないでしょうか。

結城より

emeitchさん、結城です。

「概念に名前がほしい」というのは興味深い問いですが、あまり名案は思い浮かびませんでした。 しいて言えば

   「出力による検証」

あるいはもっと端的に、

   Prove it. (証明せよ)

くらいでしょうか。 つまり、自問自答するわけですね。 「あ、わかっちゃった」 「Prove it.」 という風に。

何かよい名前を思いついたら教えてくださいね。 フィードバック、感謝します。(^_^)

emeitchさんから

結城先生へ。

ご返信ありがとうございます。

「Prove it.」は、自己啓蒙感が出てて、個人的にすごくいいなと思いました。 音のリズムなんかもすごくいい気がします。

私が思いついたものとしては、

    「出知」

とか

    「表現理解」

みたいな感じですかね。インパクトや連想性に欠けますが...。

まつもと ゆきひろさん の 「Objectクラスの上」の名前のように公募って手もある かもしれませんね。

feedback | top

2005年4月20日

本当に理解するまで学ぶということ この記事(2005年4月20日10:27)を含む「はてなブックマーク」    

今日も、地味にプログラミングの勉強。

* * *

一回でも「本当に理解」すると、いったん忘れても思い出しやすい。 最初はとても時間がかかるかもしれないけれど、 きちんと学ぶことは大切ですね。 時間をたっぷりかけて、人に説明できるくらいまで自分の頭で考えること。

先を急がなくてもいい。 無駄なようでも、自分の手を動かし、頭を使って考える。 他の人が何と言おうとも、自分がわかってないならわかっていないのだ。

わかったふりをしないこと。納得いくまで考えること。もっと考えること。

理解できたと思ったら本を閉じ、 白い紙を広げ、そこに自分が理解できたと思うことを再構成してみる。 そうすれば、自分が本当に理解できたかどうかがわかる。 残念ながらたいていは再構成できない。 そこで本を再度開き、読み直し、考え直す。

あるいはまた、自分で新しい「例」を作ってみるのもよいね。 新しい例を作るのはいかに難しいかがわかる。 そして本を開き、そこに書かれている例の意味を考え直す。

…こんな風に学ぶ習慣をつけていると、 「本当に理解」した状態がどういうものか、自分で判断できるようになってくる。 「うん、ここは理解した。でもこっちはまだ理解が足りない」という判断ができるようになる。

そうなると、学ぶことがだんだん楽しくなってくる。

春から初夏へ。新しい学びにチャレンジ!

一言お祈りします。

天の父なる神さま。あなたの御名を賛美します。 よい季節の中で、たくさんの学びができることをありがとうございます。

あなたは私たち一人一人に特別のご計画をお持ちです。 そのことを感謝します。 あなたは私たちをこよなく愛してくださり、 必要なものをすべて備え、最善の時に与えてくださる方です。 あなたは何とすばらしい方でしょう。主の御名をほめたたえます。

新しい季節で、新しい生活を始めている方もたくさんいらっしゃいます。 どうぞその方々の上に、あなたの守りと導きがありますように。 毎日、喜びと感謝を持って生きることができますように。 また、ひとりひとりが、あなたのことを知ることができ、 イエスさまの救いの恵みに預かることができますようにと、心から願います。

いま、病に苦しんでいる方、 また、愛する人を失って悲しんでいる方、 人間関係や子育てで悩む方のためにも祈ります。 イエスさまご自身がその方々のところに来てくださり、 必要ないやしとなぐさめ、はげましを与えてくださいますように。 必要な力を与えてくださり、幸福な人生を歩ませてください。

イエスさまのお名前を通して、感謝してお祈りいたします。

アーメン!

feedback | top

2005年4月19日

平静の祈り この記事(2005年4月19日16:36)を含む「はてなブックマーク」    

平静の祈り、全文。 はちこさんの翻訳です。

feedback | top

2005年4月18日

勉強 / Subversionの基礎練習 この記事(2005年4月18日10:32)を含む「はてなブックマーク」    

月曜日は、地味にプログラミングの勉強。

* * *

原稿やソースはこれまでCVSで管理していた。 これからは、Subversionを使ってみようと思う。 まあ、作業者は私一人だからどちらでもいいんだけれど。

Subversionでsvnadmin createするときに、--fs-type fsfsというオプションをつけると、 Berkeley DBを使わず、素のファイルを使える設定にできるようだ。 互換性や、(サーバを使わない)ネットワーク共有を考えるときには、 この選択もありなのかもしれない。2004年からだから、 コードが枯れていないとドキュメントには書いてあった。 まあとりあえずは、デフォルトのBerkeley DBでやってみるか。

(ごそごそ)

gifファイル、Visioのファイルは自動的にバイナリファイルとしてaddされ、 txt, css, htmlファイルなどは自動的にテキストファイルとしてaddされたようだ。 たいへんよろしい。

svn updateやsvn commitの使い方は忘れないんだけれど、 一番最初はどうするかをよく忘れる。 そういうときには、自分の書いたドキュメントが役立つ。 書いといてよかったよかった。

feedback | top

2005年4月16日

中間数(mediant)を使った、小数の既約分数表現 この記事(2005年4月16日15:04)を含む「はてなブックマーク」    

Graham, Knuth, Patashnikの『コンピュータの数学』(p.116)を読んでいて、 何となくプログラミングしてみました。 スターン・ブロコット木の構成を用いて、 与えられた小数を表現する既約分数を見つけるというもの。

プログラム

use strict;
# use bignum;

package Fraction;
use overload '""' => \&as_string, '0+' => \&as_value;

my $DEBUG = 1;
my $ZERO = Fraction->new2(0, 1);
my $INFINITY = Fraction->new2(1, 0);

sub new2 {
    my ($class, $up, $down) = @_;
    return bless {
        up => $up,
        down => $down,
    }, $class;
}

sub new1 {
    my ($class, $target) = @_;
    my $left = $ZERO;
    my $right = $INFINITY;
    while (1) {
        my $mediant = $left->mediant($right);
        my $value = $mediant->as_value;
        print "$value $mediant\n" if ($DEBUG);
        if ($value < $target) {
            $left = $mediant;
        } elsif ($value > $target) {
            $right = $mediant;
        } else {
            return $mediant;
        }
    }
}

sub mediant {
    my ($self, $right) = @_;
    return Fraction->new2(
        $self->{up} + $right->{up},
        $self->{down} + $right->{down},
    );
}

sub as_value {
    my ($self) = @_;
    if ($self->{down} == 0) {
        die;
    } else {
        return $self->{up} / $self->{down};
    }
}

sub as_string {
    my ($self) = @_;
    return "$self->{up}/$self->{down}";
}

package main;

my $half = Fraction->new2(1, 2);
print "\$half = $half\n\n";

my $quarter = Fraction->new1(0.25);
print "\$quarter = $quarter\n\n";

my $sqrt2 = Fraction->new1(sqrt(2));
print "\$sqrt2 = $sqrt2\n\n";

my $pi = Fraction->new1(3.14159265358979);
print "\$pi = $pi\n\n";

実行結果

$half = 1/2

1 1/1
0.5 1/2
0.333333333333333 1/3
0.25 1/4
$quarter = 1/4

1 1/1
2 2/1
1.5 3/2
1.33333333333333 4/3
1.4 7/5
1.42857142857143 10/7
1.41666666666667 17/12
1.41176470588235 24/17
1.41379310344828 41/29
1.41463414634146 58/41
1.41428571428571 99/70
1.41414141414141 140/99
1.41420118343195 239/169
1.41422594142259 338/239
1.41421568627451 577/408
1.41421143847487 816/577
1.41421319796954 1393/985
1.41421392677674 1970/1393
1.41421362489487 3363/2378
1.41421349985132 4756/3363
1.41421355164605 8119/5741
1.41421357310014 11482/8119
1.41421356421356 19601/13860
1.41421356053263 27720/19601
1.41421356205732 47321/33461
1.41421356268887 66922/47321
1.41421356242727 114243/80782
1.41421356231892 161564/114243
1.4142135623638 275807/195025
1.41421356238239 390050/275807
1.41421356237469 665857/470832
1.4142135623715 941664/665857
1.41421356237282 1607521/1136689
1.41421356237337 2273378/1607521
1.41421356237314 3880899/2744210
1.41421356237305 5488420/3880899
1.41421356237309 9369319/6625109
1.4142135623731 13250218/9369319
1.4142135623731 22619537/15994428
1.41421356237309 31988856/22619537
1.41421356237309 54608393/38613965
1.4142135623731 77227930/54608393
1.4142135623731 131836323/93222358
$sqrt2 = 131836323/93222358

1 1/1
2 2/1
3 3/1
4 4/1
3.5 7/2
3.33333333333333 10/3
3.25 13/4
3.2 16/5
3.16666666666667 19/6
3.14285714285714 22/7
3.125 25/8
3.13333333333333 47/15
3.13636363636364 69/22
3.13793103448276 91/29
3.13888888888889 113/36
3.13953488372093 135/43
3.14 157/50
3.14035087719298 179/57
3.140625 201/64
3.14084507042254 223/71
3.14102564102564 245/78
3.14117647058824 267/85
3.14130434782609 289/92
3.14141414141414 311/99
3.14150943396226 333/106
3.14159292035398 355/113
3.14155251141552 688/219
3.14156626506024 1043/332
3.14157303370787 1398/445
3.1415770609319 1753/558
3.14157973174367 2108/671
3.14158163265306 2463/784
3.14158305462653 2818/897
3.14158415841584 3173/1010
3.14158504007124 3528/1123
3.1415857605178 3883/1236
3.14158636026686 4238/1349
3.14158686730506 4593/1462
3.1415873015873 4948/1575
3.14158767772512 5303/1688
3.14158800666296 5658/1801
3.14158829676071 6013/1914
3.14158855451406 6368/2027
3.14158878504673 6723/2140
3.14158899245451 7078/2253
3.14158918005072 7433/2366
3.14158935054457 7788/2479
3.14158950617284 8143/2592
3.14158964879852 8498/2705
3.14158977998581 8853/2818
3.14158990105766 9208/2931
3.1415900131406 9563/3044
3.14159011719987 9918/3157
3.14159021406728 10273/3270
3.14159030446349 10628/3383
3.14159038901602 10983/3496
3.14159046827376 11338/3609
3.14159054271897 11693/3722
3.14159061277705 12048/3835
3.14159067882472 12403/3948
3.14159074119675 12758/4061
3.14159080019166 13113/4174
3.14159085607651 13468/4287
3.14159090909091 13823/4400
3.14159095945048 14178/4513
3.14159100734976 14533/4626
3.14159105296476 14888/4739
3.14159109645507 15243/4852
3.14159113796576 15598/4965
3.14159117762899 15953/5078
3.1415912155654 16308/5191
3.14159125188537 16663/5304
3.14159128669005 17018/5417
3.14159132007233 17373/5530
3.14159135211767 17728/5643
3.1415913829048 18083/5756
3.14159141250639 18438/5869
3.14159144098964 18793/5982
3.14159146841674 19148/6095
3.14159149484536 19503/6208
3.14159152032906 19858/6321
3.14159154491763 20213/6434
3.1415915686574 20568/6547
3.14159159159159 20923/6660
3.14159161376052 21278/6773
3.14159163520186 21633/6886
3.14159165595085 21988/6999
3.14159167604049 22343/7112
3.14159169550173 22698/7225
3.14159171436359 23053/7338
3.14159173265333 23408/7451
3.14159175039662 23763/7564
3.14159176761756 24118/7677
3.1415917843389 24473/7790
3.14159180058206 24828/7903
3.14159181636727 25183/8016
3.14159183171362 25538/8129
3.14159184663917 25893/8242
3.14159186116098 26248/8355
3.14159187529523 26603/8468
3.14159188905722 26958/8581
3.14159190246147 27313/8694
3.14159191552174 27668/8807
3.14159192825112 28023/8920
3.14159194066202 28378/9033
3.14159195276624 28733/9146
3.14159196457501 29088/9259
3.14159197609902 29443/9372
3.14159198734844 29798/9485
3.14159199833299 30153/9598
3.14159200906189 30508/9711
3.14159201954397 30863/9824
3.14159202978766 31218/9937
3.141592039801 31573/10050
3.14159204959166 31928/10163
3.14159205916699 32283/10276
3.14159206853403 32638/10389
3.14159207769949 32993/10502
3.14159208666981 33348/10615
3.14159209545116 33703/10728
3.14159210404944 34058/10841
3.14159211247033 34413/10954
3.14159212071926 34768/11067
3.14159212880143 35123/11180
3.14159213672186 35478/11293
3.14159214448536 35833/11406
3.14159215209654 36188/11519
3.14159215955983 36543/11632
3.14159216687952 36898/11745
3.14159217405971 37253/11858
3.14159218110434 37608/11971
3.14159218801721 37963/12084
3.141592194802 38318/12197
3.14159220146223 38673/12310
3.14159220800129 39028/12423
3.14159221442246 39383/12536
3.14159222072891 39738/12649
3.14159222692368 40093/12762
3.14159223300971 40448/12875
3.14159223898984 40803/12988
3.1415922448668 41158/13101
3.14159225064326 41513/13214
3.14159225632175 41868/13327
3.14159226190476 42223/13440
3.14159226739467 42578/13553
3.14159227279379 42933/13666
3.14159227810436 43288/13779
3.14159228332853 43643/13892
3.1415922884684 43998/14005
3.141592293526 44353/14118
3.14159229850327 44708/14231
3.14159230340212 45063/14344
3.14159230822439 45418/14457
3.14159231297186 45773/14570
3.14159231764626 46128/14683
3.14159232224926 46483/14796
3.14159232678248 46838/14909
3.1415923312475 47193/15022
3.14159233564585 47548/15135
3.14159233997901 47903/15248
3.14159234424842 48258/15361
3.14159234845547 48613/15474
3.14159235260153 48968/15587
3.1415923566879 49323/15700
3.14159236071587 49678/15813
3.14159236468668 50033/15926
3.14159236860153 50388/16039
3.14159237246161 50743/16152
3.14159237626806 51098/16265
3.14159238002198 51453/16378
3.14159238372446 51808/16491
3.14159238737654 52163/16604
3.14159239097924 52518/16717
3.14159239453357 52873/16830
3.14159239804049 53228/16943
3.14159240150094 53583/17056
3.14159240491584 53938/17169
3.14159240828608 54293/17282
3.14159241161253 54648/17395
3.14159241489605 55003/17508
3.14159241813745 55358/17621
3.14159242133754 55713/17734
3.14159242449711 56068/17847
3.14159242761693 56423/17960
3.14159243069773 56778/18073
3.14159243374024 57133/18186
3.14159243674518 57488/18299
3.14159243971323 57843/18412
3.14159244264507 58198/18525
3.14159244554137 58553/18638
3.14159244840275 58908/18751
3.14159245122986 59263/18864
3.14159245402329 59618/18977
3.14159245678366 59973/19090
3.14159245951153 60328/19203
3.1415924622075 60683/19316
3.1415924648721 61038/19429
3.14159246750588 61393/19542
3.14159247010939 61748/19655
3.14159247268312 62103/19768
3.1415924752276 62458/19881
3.14159247774332 62813/19994
3.14159248023077 63168/20107
3.14159248269041 63523/20220
3.14159248512271 63878/20333
3.14159248752812 64233/20446
3.1415924899071 64588/20559
3.14159249226006 64943/20672
3.14159249458744 65298/20785
3.14159249688965 65653/20898
3.1415924991671 66008/21011
3.14159250142019 66363/21124
3.14159250364929 66718/21237
3.1415925058548 67073/21350
3.14159250803709 67428/21463
3.14159251019651 67783/21576
3.14159251233344 68138/21689
3.14159251444822 68493/21802
3.14159251654118 68848/21915
3.14159251861267 69203/22028
3.14159252066302 69558/22141
3.14159252269255 69913/22254
3.14159252470157 70268/22367
3.14159252669039 70623/22480
3.14159252865932 70978/22593
3.14159253060865 71333/22706
3.14159253253867 71688/22819
3.14159253444968 72043/22932
3.14159253634194 72398/23045
3.14159253821574 72753/23158
3.14159254007133 73108/23271
3.141592541909 73463/23384
3.14159254372899 73818/23497
3.14159254553155 74173/23610
3.14159254731695 74528/23723
3.14159254908542 74883/23836
3.1415925508372 75238/23949
3.14159255257252 75593/24062
3.14159255429162 75948/24175
3.14159255599473 76303/24288
3.14159255768206 76658/24401
3.14159255935384 77013/24514
3.14159256101027 77368/24627
3.14159256265158 77723/24740
3.14159256427795 78078/24853
3.14159256588961 78433/24966
3.14159256748674 78788/25079
3.14159256906955 79143/25192
3.14159257063821 79498/25305
3.14159257219293 79853/25418
3.14159257373389 80208/25531
3.14159257526127 80563/25644
3.14159257677525 80918/25757
3.141592578276 81273/25870
3.14159257976369 81628/25983
3.1415925812385 81983/26096
3.1415925827006 82338/26209
3.14159258415014 82693/26322
3.14159258558729 83048/26435
3.1415925870122 83403/26548
3.14159258842504 83758/26661
3.14159258982595 84113/26774
3.14159259121509 84468/26887
3.14159259259259 84823/27000
3.14159259395862 85178/27113
3.1415925953133 85533/27226
3.14159259665679 85888/27339
3.14159259798922 86243/27452
3.14159259931072 86598/27565
3.14159260062143 86953/27678
3.14159260192149 87308/27791
3.14159260321101 87663/27904
3.14159260449013 88018/28017
3.14159260575898 88373/28130
3.14159260701767 88728/28243
3.14159260826633 89083/28356
3.14159260950508 89438/28469
3.14159261073403 89793/28582
3.1415926119533 90148/28695
3.14159261316301 90503/28808
3.14159261436327 90858/28921
3.14159261555418 91213/29034
3.14159261673586 91568/29147
3.14159261790841 91923/29260
3.14159261907194 92278/29373
3.14159262022655 92633/29486
3.14159262137234 92988/29599
3.14159262250942 93343/29712
3.14159262363789 93698/29825
3.14159262475783 94053/29938
3.14159262586936 94408/30051
3.14159262697255 94763/30164
3.14159262806751 95118/30277
3.14159262915433 95473/30390
3.14159263023309 95828/30503
3.14159263130389 96183/30616
3.14159263236682 96538/30729
3.14159263342196 96893/30842
3.14159263446939 97248/30955
3.14159263550921 97603/31068
3.14159263654148 97958/31181
3.14159263756631 98313/31294
3.14159263858376 98668/31407
3.14159263959391 99023/31520
3.14159264059685 99378/31633
3.14159264159264 99733/31746
3.14159264258137 100088/31859
3.14159264356312 100443/31972
3.14159264453795 100798/32085
3.14159264550593 101153/32198
3.14159264646715 101508/32311
3.14159264742166 101863/32424
3.14159264836955 102218/32537
3.14159264931087 102573/32650
3.1415926502457 102928/32763
3.14159265117411 103283/32876
3.14159265209615 103638/32989
3.1415926530119 103993/33102
3.14159265392142 104348/33215
3.14159265346744 208341/66317
3.14159265361894 312689/99532
3.14159265355836 521030/165849
3.14159265358108 833719/265381
3.1415926535914 1146408/364913
3.14159265358706 1980127/630294
3.14159265358865 3126535/995207
3.14159265358939 4272943/1360120
3.14159265358982 5419351/1725033
3.14159265358963 9692294/3085153
3.1415926535897 15111645/4810186
3.14159265358973 20530996/6535219
3.14159265358975 25950347/8260252
3.14159265358976 31369698/9985285
3.14159265358977 36789049/11710318
3.14159265358977 42208400/13435351
3.14159265358978 47627751/15160384
3.14159265358978 53047102/16885417
3.14159265358978 58466453/18610450
3.14159265358979 63885804/20335483
3.14159265358979 69305155/22060516
3.14159265358979 74724506/23785549
3.14159265358979 144029661/45846065
$pi = 144029661/45846065

feedback | top

2005年4月15日

夜、子供たちの布団にもぐりこんで この記事(2005年4月15日22:30)を含む「はてなブックマーク」    

夜遅く帰ると、家内はぐっすり眠っていた。 私は、つけっぱなしになっていた枕もとの電気を消す。

子供部屋のほうからくすくす声が聞こえてきた。 のぞいてみると、長男と次男が布団に入ってこちらを見上げ、笑っている。 「おかえりなさい」「おかえりなさい」と二人が言う。 「ただいま」と私が言う。

私は次男の布団にもぐりこむ。二人は私の顔を見てにこにこしている。 私は「あなたたち、いい子だねえ。お父さんはあなたたちが大好きだよ」と言う。

「ねえ、何かお話して」と長男が言う。

「どんな話がいいかな」と私が言うと、次男が「世界で一番おもしろい話がいい」と言う。

息子たちにこんな風に言われたときに「よしっ」と応えるのは父親の醍醐味である。 さっそく「みずうみのそばに一人で住んでいた漁師のおはなし」をはじめる。 お話を作りながら話すのだ。

「じゃ、お話をはじめます。まず二人とも目をつぶってね。むかしむかしあるところに漁師がいました。 大きなみずうみのほとりにある、小さな小屋に一人で住んでいました…」

私も目をつむり、心にうつる情景を、ひとつひとつていねいに言葉にしていく。 お話がどちらの方向に進むのかは、私にもわからない。 私の心の目に見えているものを、子供たちの心にそのまま浮かばせるため、 私は物語をつむいでいく。ゆっくりと、しずかな声で。

やがて、子供たちの寝息が聞こえてくる。 私は「…と漁師は思ったのでした。つづく」と話を終える。 目を開くと、子供たちは二人とも幸せそうに眠っている。

私はそっと子供部屋の扉を閉め、食卓の上にノートパソコンを広げて、日記を書く。

feedback | top

無理数クイズ(解答編) この記事(2005年4月15日11:00)を含む「はてなブックマーク」    

まずは無理数クイズ(問題編)をお読みください。

準備

A, Bを整数とすると、 3を法とする剰余を考えた下記の表から、 「A^2 + B^2が3の倍数」ならば「A, Bはともに3の倍数」であることがわかります。

    A mod 3     B mod 3     (A^2 + B^2) mod 3
    0           0           0
    0           1           1
    0           2           1
    1           0           1
    1           1           2
    1           2           2
    2           0           1
    2           1           2
    2           2           2

証明

「実数x, yが x^2 + y^2 = 3 という式を満たすならば、xとyの少なくとも一方は無理数である」ことを 背理法を使って証明します。

「x^2 + y^2 = 3という式を満たす有理数xとyが存在する」と仮定します。

すると、有理数の定義から、整数a,b,m,nを使って x = a/b, y = m/n と書くことができます(a⊥b, m⊥n)。

※⊥は「互いに素」をあらわすとします。

x^2 + y^2 = 3をa,b,m,nを使って書くと、 (a/b)^2 + (m/n)^2 = 3 になります。 両辺に(bn)^2を掛けて分母を払い、次式(1)を得ます。

(an)^2 + (bm)^2 = 3(bn)^2     ――式(1)

すなわち(an)^2 + (bm)^2は3の倍数となります。 「準備」の結果から、anとbmは両方とも3の倍数になります。

anとbmの両方とも3の倍数ですから、 (an)^2 + (bm)^2 は9の倍数になります。 つまり、式(1)の右辺3(bn)^2も9の倍数になります。 ということは、(bn)^2は3の倍数となり、 bnも3の倍数になります。

ここまでで、 an, bm, bnはすべて3の倍数になることがわかりました。

aが3の倍数かどうかによって場合分けをします。

aが3の倍数の場合: a⊥bより、bは3の倍数にはなりません。 bmとbnは両方とも3の倍数ですから、mとnは両方とも3の倍数になります。 しかしこれは、m⊥nと矛盾します。

aが3の倍数ではない場合: anは3の倍数ですから、nは3の倍数です。 m⊥nから、mは3の倍数ではありません。

bとnの最大公約数をgとすると、b = gp, n = gqを満たす整数p, qが存在します(p⊥q)。 式(1)の両辺をg^2で割って次式(2)を得ます。

(aq)^2 + (pm)^2 = 3(gpq)^2     ――式(2)

すなわち(aq)^2 + (pm)^2は3の倍数となります。 「準備」の結果から、aqとpmは両方とも3の倍数になります。 ところで、aとmはいずれも3の倍数ではありませんから、 qとpは両方とも3の倍数になります。 しかしこれは、p⊥qと矛盾します。

最初の仮定から、必ず矛盾が導かれることがわかりましたので、 背理法により、 x^2 + y^2 = 3という式を満たす有理数x, yは存在しません。

証明終わり。

※この「無理数クイズ」は都立大の入試問題に修正を加えたものです。

読者さんからの解答

以下は、結城あてに解答を送ってくださった方のページです。 結城の解答よりもエレガントです… (^_^;

feedback | top

2005年4月13日

ジュンク堂(新宿店)で、読者さんへのメッセージ展示 この記事(2005年4月13日18:00)を含む「はてなブックマーク」    

先日、 紀伊國屋書店(新宿本店)で読者さんへのメッセージを展示という話題を書きました。

紀伊國屋書店だけではなく、 ジュンク堂(新宿店)の『プログラマの数学』を売っている棚にも、 営業の方が結城の色紙を展示してくださったそうです。 ジュンク堂(新宿店)にお立ち寄りの方は、 のぞいていただければ感謝です。

営業の方、また書店さん、もちろん読者のみなさん、いつもありがとうございます!

追記(2005-04-13 夜)

ジュンク堂(新宿店)に行ってきました。 8Fの35番の棚(フェア)のところに、色紙と、一面に並んだ『プログラマの数学』がありました(とてもびっくりします)。 フェアのところに並んでいるのは、結城の『プログラマの数学』だけではありません。 『プログラマの数学』の読書案内に掲げた本( たとえばホフスタッターの『ゲーデル・エッシャー・バッハ』、 コンウェイの『数の本』、 『虚数の情緒』、 『いかにして問題をとくか』、 安野光雅さんの『壷の中』、Knuth先生の本…)が集められています。 それだけではなく、この手の本が好きな人が気に入りそうな本が多数並んでおり、 結城は、この棚を見るなり「なんだか私の本棚みたい!」と思ってしまいました。

結城の『プログラマの数学』を気に入ってくださった方も、 『プログラマの数学』とは相性が合わなかったけれどこの手の本は好き、 という方も、お時間がありましたらぜひ一度お立ち寄りくださいな。

feedback | top

無理数クイズ(問題編) この記事(2005年4月13日11:00)を含む「はてなブックマーク」    

クイズ

「実数x, yが x^2 + y^2 = 3 という式を満たすならば、xとyの少なくとも一方は無理数である」 この命題が真なら証明し、偽なら反例を示してください。

解答したい方はfeedbackからどうぞ。 解答は、 日記などで公開させていただくかもしれませんので、 そのおつもりで。 もちろん、自分のblogに書いて、URLを送ってくださってもOKです。

Enjoy!

補足: x^2 + y^2 = 3は、 $ x^2 + y^2 = 3 $ のことです。

たぶん、それほど難しくはない…はず。 『プログラマの数学』の読者なら解きやすい…かな?

→それほど簡単ではなかった模様。それに、あまり『プログラマの数学』とは関係ないかも…。

feedback | top

2005年4月12日

勉強 / 素数と既約多項式 この記事(2005年4月12日10:12)を含む「はてなブックマーク」    

地味にプログラミングの勉強。 自分の理解が正しいかどうか、実際にプログラムを書いて確かめる。 これができるから、プログラミングは独学しやすいんですよね。

* * *

ところで、昨晩Knuth先生の『コンピュータの数学』を読んでいて、 改めて「互いに素」という概念の重要性を確認。 たとえば、小学校で分数の「約分」ってしますよね。 あれは分子と分母を「互いに素」にするための操作なわけです。 で、そのためには分子と分母の公約数で繰り返し割る。 最大公約数がわかっているならそれで1回割ればよい。 つまり…

(a/gcd(a,b)) ⊥ (b/gcd(a,b))

ということですね。ここで、gcd(a,b)はaとbの最大公約数。a/gcd(a,b)はaを「aとbの最大公約数」で割ったもの。 上の式は「aとbを最大公約数で割った数は、互いに素」という意味。

話は飛びますが。

AB=0

のとき、AまたはBは0ですね(両方0でもよい)。いま、AとBをそれぞれ(x-a), (x-b)としてみます。すると、

(x-a)(x-b)=0

このとき、x-a=0、または、x-b=0になります。要するに、xはaまたはbです。 上の式を展開すると、

x^2 - (a+b)x + ab = 0

という二次方程式になる。つまり、もし

x^2 + ●x + ■ = 0

という形の二次方程式を見かけたら、

● = -(a+b)
■ = ab

という形になるようなaとbを見つければ、 それが上の二次方程式の解になるのですね。 まあ、いわゆる「解と係数の関係」です。

何を当たり前のことを書いているかというと、 二次方程式を解くというのは、 x^2 + ●x + ■ = 0 のような形をしているものを、もっと取り扱いやすい (x-a)(x-b)=0 という形に変形することなのだなあ、と改めて思ったからなのです(で、そのための方策のひとつが解と係数の関係だと)。 両方は方程式としては等価なのに、取り扱いやすさ(?)という点では大きく違う。 これもまた「構造を見抜く」ことのバリエーションでしょうか。

この形は、素因数分解と似ていますよね。 たとえば、1441149131980013567という大きな数があるとする。 この数の構造を見抜くことができれば、 524287×2748779069441 という形に分解できる。

多項式の因数分解が、整数の素因数分解に似ているということからさらに発想を広げる。 多項式にとっての「素数」は何だろう? って思いますよね。つまり、それ以上「因数分解」できない多項式。 それには既約多項式という名前がついている。

素因数分解は難しい計算。 一般に構造を見抜くことというのは、難しい情報処理なのかもしれないなあと、ぼんやり思う。 そこからの想像なんだけれど、一般の多項式を既約多項式に分解するって、 ものすごく難しい計算ではないだろうか。どうだろう。

さて、と。 x^2 - 1 は(x+1)(x-1)のように因数分解できる。 でも、x^2 + 1は因数分解できない。 x+1, x-1, x^2+1は既約多項式。

ん?でも、虚数iを持ってくればx^2+1だって因数分解できるねえ。 x^2+1 = (x+i)(x-i) だものね。ということは、実数の範囲で、とか、複素数の範囲で、のように 範囲を定めないとまずいんでしょうね。

「範囲を定めないとまずい」というのを整数の素因数分解の話に逆輸入すると… 3は素数だけれど、3が素数なのは整数の範囲で、ということですね。 たとえば、実数に話を広げちゃったら、√3 × √3という積の形に書けちゃいますもんね。 有理数の範囲でも1.5×2とかね。

ふむふむ。 多項式の世界における既約多項式を基底に持つベクトル空間も考えられそうですね。 ひゃあ。

(ちなみに、最近書いている「基底」の話題は、 『プログラマの数学』と直接の関係はありません)

feedback | top

2005年4月11日

紀伊國屋書店(新宿本店)で、読者さんへのメッセージ展示 この記事(2005年4月11日13:02)を含む「はてなブックマーク」    

春 → 新しい季節 → プログラミングを学ぼう。

…ということで、 紀伊國屋書店(新宿本店)の3Fにて、 ソフトバンクパブリッシングさんが プログラミング関連書籍のフェアを行っています(4月末まで)。

林さん・柴田さん・高橋さんに混じって、 恥ずかしながら結城も、 読者さんへの応援メッセージを書きました。 3Fの売り場に色紙が飾ってあります。

新宿を通りかかる機会がありましたら、 紀伊國屋書店にぜひお寄りください。 『プログラマの数学』も多数平積みになっていましたよ!

feedback | top

素数を基底とした無限次元のベクトル空間 この記事(2005年4月11日09:58)を含む「はてなブックマーク」    

先日の日記 「互いに素」という概念の中に書いた「素因数は、ベクトル空間の直交基底に似ている」に対して、 大学院生の森田さんという方から、 なんだかすごいコメントをもらっちゃいました。

森田さん:

はじめまして。いつも楽しく読ませていただいております。

実際、0を除く有理数は(有理数としての)乗算を(ベクトルとしての)和、 整数乗をスカラー倍とみなせば素数を基底とした無限次元、整数係数のベクトル空間を成しますね。

結城:

ええと、ええと、うーんと…。ははあ、なるほど、なるほど。以下のような感じでしょうかね。

素数を基底とした無限次元のベクトルの要素は、たとえばこんな姿をしている。

(0, 2, 0, 1, -1, 0, 0, ...)

これは $ (-1)^{0} \times 2^{2} \times 3^{0} \times 5^{1} \times 7^{-1} \times 11^{0} \times 13^{0} \times \cdots $ に対応(指数のところを抜き出したのがベクトル)。 これは有理数 20/7 に対応している(ベクトルの一番最初の成分は符号ビット(指数は0または1)とする)。

2は $ 2^n $ の軸の基底。3は $ 3^m $ の軸の基底, ...とする。 12という有理数は、2と3の基底を使って、 $ (-1)^{0} \times 2^{2} \times 3^{1} $ と一意にあらわせる。 だから、(0, 2, 1, 0, 0, 0, ...)というベクトルと対応。-1/2 という有理数は、 $ (-1)^{1} \times 2^{-1} $ だから、(1, -1, 0, 0, 0, 0, ...)というベクトルと対応。

零ベクトル(0, 0, 0, 0, ...)に対応する有理数は1。

いま、p/qという有理数を考えよう。 pを素因数分解したベクトルを $ (p_{-1}, p_2, p_3, p_5, \ldots) $ とし、 qを素因数分解したベクトルを $ (q_{-1}, q_2, q_3, q_5, \ldots) $ とすると、 p/qは $ (p_{-1} - q_{-1}, p_2 - q_2, p_3 - q_3, p_5 - q_5, \ldots) $ に対応する(ただし符号ビットのところは2の剰余系で計算)。

有理数p/q(ただしpもqも非0とする)に対応するベクトルの逆ベクトルは、q/pに対応するベクトルになる。

こんな感じでしょうか。

そうか、こういうベクトル空間を考えると、 素因数分解というのは「ひとつのベクトルがそれぞれの軸に落とした影を見つける」という計算なのですね。

そして、2つの整数の最大公約数が1(互いに素)というのは、 ベクトルaとベクトルbの成分で非ゼロの部分に重なりがない(直交する)ということなのか。 で、a⊥bだと。

ところで「互いに素」を「a⊥b」と表記するという話題は、Knuth先生たちの 『コンピュータの数学』 に出てきます。 「互いに素」を簡潔に表す表記法がないので「世界中の数学者たちよ、もう待てない」というふうに書かれていますね (いま記憶で書いているので不正確かも。あとで確かめます→おおむね合ってました。邦訳p.115)。

以下はおまけ。

追記(2005-04-11)

『コンピュータの数学』のp.107には、 ちょうどこの「素数を基底とした無限次元のベクトル空間」に似た「素数指数表現」という話題が書かれていました。

読者さんからコメントをいただいたので、さらに追記(2005-04-12)

読者さんからコメント

すごく瑣末なんですが,このケースでは確かに素数を基底とした自由加群ですが, 係数環が体ではない場合,数学ではベクトル空間という言い方をしません. #本当に瑣末ですね.ちょっと気になったので.

ところで,Hamel基底をご存知でしょうか? 実数体は有理数体上無限次元のベクトル空間なのですが,その基底にはHamel基底という名前がついています.もちろん具体的な構成はできないのですが.

http://mathworld.wolfram.com/HamelBasis.html

feedback | top

2005年4月10日

はちこさんの日記 この記事(2005年4月10日07:36)を含む「はてなブックマーク」    

最近のはちこさんの日記には、 先日開かれたリカバリーセミナーの話題が出てきますが、 その中には、 人生の諸問題に対するヒントもたくさん書かれているように思います。 みなさんぜひお読みください。

はちこさんご夫妻が翻訳なさった本もご紹介。

feedback | top

2005年4月8日

対角線論法における矛盾 この記事(2005年4月8日09:28)を含む「はてなブックマーク」    

昨晩『ゲーデル・エッシャー・バッハ』を読んでいて浮かんだ他愛もない思いつき。

「対角線論法」で出てくる矛盾は ContradictionではなくCantoradictionと呼んだらどうだろう。

feedback | top

2005年4月6日

「互いに素」という概念 この記事(2005年4月6日19:03)を含む「はてなブックマーク」    

長男「ねえ、問題出して!」

結城「2つの整数aとbがあるとする。簡単のために両方とも1以上だとしよう」

長男「ふんふん」

結城「aとbの最大公約数が1のとき、aとbの最小公倍数はa×bになる。ホントかウソか?」

長男「ええっ、ええ?」

結城「もう一回言おうか?」

長男「いや、いいや。…ええと…ホント!」

結城「はい、正解です!」

長男「だって両方とも素数のときでしょ」

結城「がく。違うよ」

長男「えっ、そうかなあ」

結城「素数同士でなくても最大公約数が1になることがあるよ。たとえば…」

長男「2と3とか」

結城「それじゃ、両方素数じゃん」

長男「あそっか。…4と5とか?」

結城「そうそう」

長男「わかった! 差が1ならいいんだ!」

結城「がく。違うって。だって4と9もそうでしょう」

長男「そうか。そうだね。4は2×2, 9は3×3か」

結城「そうそう。最大公約数が1になるのは、aとbの素因数に共通部分がなければいい。4の素因数は2で、9の素因数は3。両方には共通部分がない。もちろん、aとbの両方が素数でもいいけれどね。共通な素因数がないことを『互いに素』っていう」

長男「ふんふん」

結城「2×2×5と7×11も互いに素だ。共通の素因数がないからね」

長男「2×2×5は20で、7×11は77だね。20と77は互いに素なんだ」

結城「そう。素数は誰に対しても「互いに素」だ。「互いに素」っていうのは「相手にとって素数」という役割を持っているということだね」

余談:

素因数は、ベクトル空間の直交基底に似ている。 素因数を掛け合わせて整数を作るのは、直交基底が空間を張るのに似ている。 「整数aとbが互いに素」を「a⊥b」と表記することがあるのも、むべなるかな。

素因数は、元素に似ている。 整数を素因数に分解するのは、化合物を元素に分解するのに似ている。 化学で「2つの化合物a, bに共通元素がない」ことを表す記号はあるんだろうか。 「a⊥b」で表したりして。

追記:

feedback | top

中学教科書と離散数学 この記事(2005年4月6日08:05)を含む「はてなブックマーク」    

中学教科書の話題が新聞に載っていた。

東京書籍は1年の数学「発展」でこんな問題を載せた。 「ある年の1月1日は金曜日でした。この年の2月1日は何曜日ですか」

余りの数の集合を扱った「剰余系」と呼ばれる分野の問題。 80年度まで使われていた教科書では中学2年の内容。 ちょうど親の世代が使っていたころだが、現在は高校でも習わない。

(中略)

同じく80年度まで使われた教科書に載り、 現在は高校で習う「順列・組み合わせ」や、 三つの文字を三つの式で解く「3元連立方程式」も復活。

(asahi.com2005年4月5日より)

剰余、順列・組み合わせなどの離散数学的な話をきちんと学ぶことは、 コンピュータが重要な役割を担う現代で、とても重要だと思っています (限られた授業時間でどんな内容を学ぶかはトレードオフになるので「何がよい」とは簡単にいえませんけれど…)。

『プログラマの数学』の中で結城は、学校で剰余はそれほど重視されていないという意味のことを書いたけれど、 近い将来は、そうじゃなくなるかもしれませんね。

feedback | top

2005年4月4日

普通の日 この記事(2005年4月4日23:59)を含む「はてなブックマーク」    

普通に生活して、普通に仕事をした一日。

feedback | top

2005年4月2日

『プログラマの数学』増刷! この記事(2005年4月2日00:04)を含む「はてなブックマーク」    

2005年3月24日に出版された 『プログラマの数学』ですが、みなさんからの人気が非常に高いため ―― 実際、アマゾンの瞬間風速では、 デザパタ本暗号本をしのぐ勢いです ―― 早くも増刷になる見込みです(!)。 書店でのご購入、Webでの言及、 それに何より、みなさまのお祈りを心より感謝します。 あふれんばかりに恵みたもう主に感謝します。

2月・3月と『プログラマの数学』の話題ばかりで申し訳ありません(特に、 結城浩のはてな日記 は、リンク集に近い状態になっていますね)。 でも……結城は、2004年のほとんどの時間をこの一冊にたっぷりと注ぎ込んで来たのです。 ご理解とご寛恕をいただければありがたいです。 あれこれと悩みつつ、育ててきた子供のようなこの本。 2005年3月はその本の出版の月でした。 読者のみなさんの応援・期待・反応・言及に本当に感謝しております。

『プログラマの数学』は、 bk1で8週連続ランキング入りし、 bk1と書泉グランデで同時にランキング1位を獲得するなど、 筆者である私の想像以上に大きな人気を得ています。 しかし、私が望むことはいつも同じです。それは 「この本が、この本を必要としている読者(あなた)に届けられますように」 という願いです。 私は、書店で私の本を見かけると、本に手をそっと触れて、いつもそのように祈っています。

本が売れますと、それは結城に収入をもたらします。 それは、たいへん感謝なことです。 仕事に対する報酬として、私は感謝して受け取ります。 でも、私は ―― これが傲慢な言い方に聞こえないとよいのですけれど ―― 私が書いたいくばくかの文章が、 一人の読者(あなた)に対して何らかの役に立つ(あるいは楽しみを与える、喜びを与える、励ましを与える…) ものであってほしいと思っているのです。

せっかく貴重なお金を払って本を買うのだから、 せっかく貴重な時間を使って本を読むのだから… 少しでも、結城が感じた「わくわく」や「どきどき」や「なるほど」が、 読者の「あなた」に届けばよいなあ!と、心から思っているのです。

ほんとに。

feedback | top

2005年4月1日

SHA-1を利用した素因数分解の高速なアルゴリズム この記事(2005年4月1日00:04)を含む「はてなブックマーク」    

SHA-1が破られた(SHA-1 Broken)というニュースが最近話題になりましたね。 メールマガジンCrypto-gremを読んでいたら、 SHA-1 Brokenに関連して、さらに衝撃的な記事が流れていました。

「SHA-1を破った方法を応用して、大きな数の素因数分解を高速に行うアルゴリズム」 を中国人の研究者グループが発見。 特定の条件を満たすなら、 O(n^(1/2)) に近いオーダーで素因数分解が可能とのこと。

一方向ハッシュ関数SHA-1を破る方法というのは、 簡単に言えばブルート・フォース・アタックを効率的に行う方法です。 一見ランダムに見える(でもそうじゃない)空間を探索して、 その中から「構造」を見つけ出す効率的な手法です。 で、大きな数の素因数分解というのもまさに、 一見ランダムに見える数nの中に、 n = pqという「構造」を見つけ出す処理なのだそうです。 なるほど、なるほど。

記事に掲載されているリファレンスプログラム Factor.java を動かしてみると、 174桁の整数がすぐに素因数分解されました。 かかった時間は、ThinkPadで約47分!

> javac Factor.java
> java Factor
n:
1881988129 2060796383 8697239461 6504398071 6356337941
7382700763 3564229888 5971523466 5485319060 6065047430
4531738801 1303396716 1996923212 0573403187 9550656996
2213051687 5930765025 7059

Factoring................................................!

p:
3980750864 2406493739 7125500550 3864911990 6436234252
6708406385 1895759463 8895726176 8583317

q:
4727721461 0743530253 6223071973 0482246329 1469530209
7116459852 1711305207 1125636359 0397527

2823 wallclock secs.

メールで確認してみたところ、 この記事はCreative Commonsのby相当でよいとのことだったので、 翻訳してみました。以下に公開します。 かなり急いだので、もし誤訳がありましたらフィードバックお願いします。

feedback | top

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。 あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

お名前:
メール:
学年・職業など: 年齢: 男性女性
(上の情報は、いずれも未記入でかまいません)

お手数ですが、以下の問いに答えてから送信してください(迷惑書き込み防止のため)。
今年は西暦何年ですか?

何かの理由でうまく送れない場合にはメールhyuki dot mail at hyuki dot comあてにお願いします。

過去日記の一覧

豊かな人生のための四つの法則