人気ブログランキング | 話題のタグを見る

エレガントな解答

矢野健太郎の『エレガントな解答』(ちくま学芸文庫)に次のような問題があった。

2つのちがった数字を並べた2ケタの数を考える。つぎにその数字の順序を逆にした2ケタの数を考える。そして大きい方から小さい方引く。このとき答えの数字の和はいつも9になる。これに対して、あっというようなエレガントな説明を求む

ghci で10の位の数と1の位の数を足し合わせる関数 nadd を定義して、問題の状況を確認してみた。

Prelude Data.List> let nadd n = (n `div` 10) + (n `mod` 10)
Prelude Data.List> nadd (83 - 38)
9
Prelude Data.List> nadd (75 - 57)
9

確かに2つの場合とも数字の和は9になる。

この本に書いてあった解答はおおむね次のようなものだった。

2ケタの数の大きい方を 10x + y とおけば、その数字の順序をとりかえて得られる数は 10y + x である。したがって

(10x + y) - (10y + x) = 9(x - y)

ところが、x - y は1から8までの数のどれかであるから、9に1ケタの数をかけて得られる数においては、数字の和はいつも9になっているため、順序を取り替えた数の差の答えの数字の和も9になる。(証明終)

9に1ケタの数をかけて得られる数の数字の和がつねに9になるのは、この本のこの記事の前の方で証明してあった。ためしに、ghci で確認してみると次のようになる。

Prelude Data.List> map nadd $ map (*9) [1..9]
[9,9,9,9,9,9,9,9,9]

確かに、全部9になっている。

しかし、証明をするのに別の補題が必要なのがちょっと気に入らなかったので、直接に証明できないか考えてみた。

上の例にならって2ケタの数を 10x + y とし、その数字を取り替えた数を 10y + x としてみよう。このとき、10の位の数だけを引き算した答えは x - y だ。また、1の位の数だけを引き算した答えは y - x だが、y のほうが x より小さいので10の位から1を借りてきて 10 + y - x でないと計算出来ない。すると10の位の数は1を貸したので、x - y - 1 になる。したがって引き算の答えの10の位の数と1のくらいの数を足した値は、

(x -y - 1) + (10 + y - x) = 9

となる。

数学者の本というとだいたい冒頭から何を言っているのかわからないことが多いが、こういう分かりやすいクイズから入っていけるのはうれしい。

壮大な数学の体系だって、もとをたどればこんな簡単なクイズのような問題を解くことから始まったのだろう。それを優秀な頭脳がよってたかって詳しく調べあげて、気が付けば素人には入るのも気がひけるような大伽藍が構築されてしまったに違いない。

数学の難しさは、論理的な思考や発見的な思考の難しさによるものだろうが、もうひとつは基礎知識の圧倒的な不足によるものもあるのではないかと思う。数学の本を理解するためには、先人たちが築きあげてきた膨大な知識の準備が必要なのだろう。それがない素人が思考力だけでそれに挑戦しても歯がたたないのは仕方がない。

プログラムを作るのに数学は避けて通りたいが、避けられないときは、こういう数学という建物の由来を知ってから地道に基礎知識を積み上げるしかないような気がする。

数学教育も、ある意味語学教育と似たような状況があるのではないだろうか。膨大な基礎知識を、目的とする知識のゴールに向けて、取捨選択しながら有機的に配置していくということだ。

ゴルフなどでも、上手になるとカップインから逆にボールの軌跡を組み立てていくのだそうだ。膨大な基礎知識を全て頭の中に入れるのは不可能なのだから、基礎知識の取捨選択は数学や語学に限らずつねに意識しておく必要がある。
by tnomura9 | 2012-08-05 11:15 | 考えるということ | Comments(1)
Commented by 通りすがり at 2013-09-06 18:48 x
>(x -y - 1) + (10 + y - x) = 9

この解答は,素朴ですばらしい!

>数学の本を理解するためには、先人たちが築きあげてきた膨大な知識の準備が必要なのだろう。それがない素人が思考力だけでそれに挑戦しても歯がたたないのは仕方がない。

本当にそうなのでしょうか?そうでない数学こそ待望します.
<< 代数的構造 Category:Haskell >>