2011-09-20

涼しい一日

今日は久々に涼しい一日。仕事場の部屋はたまにちょっと蒸し暑かったが、それでも窓や入口を開けていれば涼しくなった。

このほど、参加を申し込んでいた、開発者向けの某イベントの参加が確定した旨、メールで通知が届いた。自分は Google に関しては、いちユーザとして依存症っぽい感じだが、ばりばりの開発者というわけではもちろんない(そもそも、マジメな開発経験はほとんどありません)。でもって、こういうイベントにはどういう人達が集まってくるのだろう、と興味を持ち、参加を申し込んでみた。

すると、一般の参加申込者は、DevQuiz という開発コンテストのようなものを受けて、得点上位者から参加証が送られるということで、このクイズにチャレンジすることになった。最初の「ウォームアップクイズ」は、クイズがアナウンスされた夜に1時間くらいで解き、次の「分野別クイズ」は、5問中2問選択で、これも数日で解いた。

そして、最後の「チャレンジクイズ」というのが、「スライドパズル」、またの名を「15-ゲーム」とも呼ぶパズルで、これを大小さまざま(3x3から6x6まで)、合計 5000 問解くと言うもの。しかも、「空白」を上下左右に動かしてパズルを解くための「手」数の上限が、上下左右ごとに定義されていて、手数の上限を超えた分の解は得点にならないとか、盤面上に「壁」と呼ばれる、パネルを動かせない領域があったり、といった制約もついている。(実は、先月末にスライドパズルの実物を探したりしたのも、先月末以来、開発がどうのこうの書いていたのも、これの関連です。)

で、まずは、第1問から第5000問まで、大小様々なパズルが並んでいるのを、大きさ(次元)ごとに整理し、解き方を考えながら最初の実装に数日。やってみると、3x3 あたりが最初に解けたのは感動したが、3x5 あたりで早くも行き詰まる。ここまでで解いたのが 600 問くらい。勉強して、次の解法の実装にまた数日。これで、4x4 くらいまではすらすら解けるようになり、1000 問くらい解いたが、5x5 から先はまた歯が立たない。さらに勉強して、次の解法の実装にまた数日。これで、締切3日前に約 2000 問、翌日になって約 4000 問解けるようになり、最終的に 4339 問が正解と認められた。

ま、最後の実装も、改善点はまだたくさん残っているし、いろいろな探索アルゴリズムの勉強も必要なことを実感したが、勉強が必要なことを学んだのも収穫になったし、開発はやっぱり楽しい!と思えたのもよかったと思う(あと、お気楽計算機数学屋を名乗っている手前、恥ずかしくない結果が出せてホッとしたのもある)。これはまさにチャレンジなクイズでした。

探索アルゴリズムは、コンピュータサイエンスの学科(学部)では演習課題程度だろうけど、数学科だったら学部の卒業研究のネタにしてもいいかな、などと思ったり。将来、卒研の学生と何問解けるか競ったりすることになるか!? などと想像するのもまた楽し。自分にとって、新鮮かつ有意義な経験になった。イベントの方も楽しんでこよう。

さて、これから台風が接近ということで、うちの辺りも気をつけなきゃないかな。ではまた明日。

0 件のコメント: