ハノイの塔

今日は有給でお休みです。昼前に起きてTVを見てるとNHK教育で小学6年生の算数をやっています。取り扱っているテーマは箱の積み替えの手数を数えるというもの。やっていることは結局ハノイの塔の問題です。
最初、4つの箱を別の場所に移す問題をやっていて手数は15という結果が得られました。次に3つをやってみると7、2つでやってみると3。

手順を分解してみると箱4つの場合、一番下の箱を動かすまで(一番はこの移動は回数に含めずに数えると)7、一番はこの移動に1、その上に残り3つの箱を順番通りに積み上げるのに7かかっています。これを一般化すると

[4箱の場合]15 = 7 + 1 + 7
[3箱の場合] 7 = 3 + 1 + 3
[2箱の場合] 3 = 1 + 1 + 1

と書けるそうです。

ここで小学6年生が叫びます。「あ、わかった。[4箱の場合]15 = 7 + 1 + 7 の7って[3箱の場合]の数なんじゃないか。[3箱の場合] 7 = 3 + 1 + 3 の3って[2箱の場合]の数なんじゃないか」と。
すごいです。小学6年生さえてます。私も恥ずかしながら知りませんでした。小学生と一緒にすげーって感じています(^^;
代数的に表すとどうなるかなー、ってのは平行して考えていたんだけど、そんな風に考えたらいいのかー、と改めて思いました。小学6年生の算数、侮り難し。



で、代数的には、手数xは x = 2^n - 1 で表せますね。

必要は発明の母

先週、職場のHP改造のためにjavascriptと格闘していました。javascriptは、文字列表示の仕方や数値演算などは多少読めば解るというものの、実はほとんど知りませんでして、結構時間がかかってしまいました。HTMLとの兼ね合いの問題もあったんですが…。
最初はあちこちのwebで公開されているものをいろいろいじりながらあーでもない、こーでもないと悩みつつ、なんとかそのプログラムでやっていることを理解していました。で、ある程度見通しが立ってからは早いもので、今週月曜には目的のカレンダーを作ることができました。よくブログについているようなカレンダーで、今日の日付が色違いで表示され、前後の月に移動でき、何か行事がある日にはリンクが張ってあって飛べる、という形式のものです。
いや、できたときは嬉しかったなぁ。やっぱプログラムっておもしろいですね。