親バカ

青春アルゴリズム

スポンサーリンク
親バカ
スポンサーリンク

受験を来月に控えて、大晦日、元旦も朝から塾の息子。1/2だけは冬期講習もお休みということで今日は久しぶりにのんびりできました。ふと思い出して、録画しておいた「青春アルゴリズム」を家族で観ました。

主演の教育実習の先生役が今のNHK朝ドラ「純と愛」に出ている子(岡本玲)だったこともあり、家族みんな親近感あり。

ドラマのストーリーは、国際情報オリンピック出場を目指す高校生(アルゴリズム同好会)の物語。そもそも国際情報オリンピックって何?と思いながら観ていましたが、ドラマを通じて「へぇーそんな青春もあるんだ」という驚きでした。

国際情報オリンピック(International Olympiad in Informatics, IOI)は、数学・物理・化学・情報・生物・天文の6種あるサイエンスオリンピックの一つ。高校生以下を対象としたプログラミングの競技会であり、文章で与えられた問題を解くプログラムを制限時間の中で作成する能力を競う。1問につき複数の入力データが与えられ、それに対して、制限メモリ・制限時間の範囲内で、いくつの正しい出力データを出せたかで点数がつけられる。

日本では、例年12月に Internet 上で予選を行い、その上位30名が2月に東京で本選を受験する。本選の上位10名前後は、春休み中に東京で1週間程度の合宿に招待され、合宿中に可能性を見出された4名が夏に開催される国際情報オリンピックに日本代表として派遣される。本選・合宿・国際大会などに参加するための旅費は規定に従い支給される。

なお、合宿招待者には、早稲田大学理工学部 特選入試受験資格、慶應義塾大学総合政策学部・環境情報学部 AO入試1次選考免除などの特典が付与される。

はてなキーワード

ドラマを観おわった後、小6の息子に「アルゴリズムとは」について教えてあげようと思い、その場の思いつきで紙にこんな問題を書いてみました。
「次の数列の10,000番目の数字は何か? 1, 2, 4, 7, 11, 16…」
僕が「簡単には計算できないだろうけど、アルゴリズムを使ってパソコンに解かせるとあっという間に答えが出るんだよ」と言うと、息子は「これ簡単でしょ」と言ってその紙にスラスラと式を書いて10秒足らずで計算終了。「答えは、49,995,001」とのこと。

法学部政治学科出身のお父さんとしては算数はまあ置いておいて、ここはアルゴリズムの力を見せるところ。でも、Windows7のノートPCにはプログラミング言語なんか入っていません。そのとき、小3の時に当時IBMに勤務していた父親が買ってくれたPC-6001でプログラミングしていた頃をふと思い出しました。「いまどきROM吸い上げたエミュレーターとか、あるのでは?」と思い、ググってみると、やっぱりありました。しかも、何か凄い本格的なやつも含めて幾つかあるみたい。これまたディープな世界の予感。

ただ、今日はちょっと片手間でプログラミングについて教えてあげたかっただけなので、簡単にセットアップできそうなやつを見繕ってダウンロード。すると、ウィンドウにはあの懐かしいグリーンモニタが現れました。しかも、テレビ走査線のちらつきを抑えるためのノンインターレス方式を忠実に再現するスキャンラインまで入っている完成度の高さに感動。もはや当初の目的を忘れかけて、しばし懐かしい世界に没入。キーを押すたびに出るあの「プチ、プチ、プチ」というクリック音まで忠実に再現しているではありませんか!

・・・ふと我に返り、アルゴリズムを説明するためのプログラミングに頭を切り替え。なにせ30年ぶりに対面するN60-BASICですよ。それでも体で覚えたものは簡単には忘れない。1分足らずで適当にプログラミング完了。しかも、何も参照しないで書けました、N60-BASICの構文。?SN Errorもなしです。PRINT命令の代わりに?が使えるんだよなとか思い出しながら、”PRINT N+1″ばんめ”;X”とかスラスラ書けた自分に驚きました。今となっては何の役にも立たないスキルと思いきや、ちゃんと動きましたよ。涙腺が緩みました。

ところが、思わぬ問題発生。CORE i5プロセッサーがフル回転でエミュレートしているPC-6001環境ですが、動作スピードもちゃんと当時のP6に合わせてありました。当然と言えば当然なのですが。これまた懐かしい感じで、1行ずつ丁寧に計算結果を出力しながら画面がスクロール。

息子曰く「遅いじゃん」。たったあれだけの単純なプログラムなのですが、忠実なP6エミュレータは最新のインテルCPU使用率を50%超にまで上げさせ、冷却ファンが唸っています。結局、10,000番目まで足し上げるのに何と10分強もかかりました。その答えは、ズバリ49,995,001!

と言う訳で、ドラマ「青春アルゴリズム」を観た小6に「アルゴリズムとは」を説明するには随分と遠回りをしてしまいましたが、息子は僕のプログラムソースコードを眺めながら、「なるほど、ここでループして足し上げるんだ」と瞬時に理解。彼だったら、きっとエレガントなソースを書くスーパープログラマーになれると思います。

ただ、地元の公立中には軟式テニス部しかないため、三度の飯よりも大好きなテニスをあえて封印して、硬式テニス部に入って思う存分にテニスをしたい!というモチベーションで受験する息子なので、志望校に合格できたらしばらくはテニス三昧の日々でしょうね。とは言え、どこかのタイミングで、プログラミングの楽しさについてもまた教えてあげようと思います。

スポンサーリンク
スポンサーリンク
シェアする
takekuraをフォローする
ロサンゼルスMBA生活とその後