競技プロコンの選手として参加させていただきました、るっちです。
先週、長野で開催された「全国高等専門学校第26回プログラミングコンテスト」に参加させていただいたときの感想や出来事を書いていきたいと思います。
今回の競技プロコンは、与えられた32*32のフィールドに、石(ピース)を置いた石に隣接させつつ、障害物を避けながら順に当てはめていく(石を置かずに次の石に移るのも可)というルールです。つまるところテトリスです。
順位は、優先順位の高い順に、
・空きマスが少ない
・使った石の数が少ない
・最終回答提出までの所要時間が短い
今回の競技プロコンでは、主に問題を読み込ませる部分や、計算結果を出力させる部分のプログラム、そしてそれを実行するアプリケーション内のボタン、および情報を表示させる欄の配置を担当しました。
先輩方は、それ以外の重要となる部分のプログラミングや、アルゴリズムの構想などを担当されていましたが、結局問題を読み込ませる部分が上手く実行できておらず、その部分の修正もしてもらいました。
自分の担当させてもらっていた仕事量は、先輩方のものと比べると少なかったのですが、その量でさえ自分ひとりだけではできなかったということに自分の未熟さを感じました。
そうして迎えた当日、私もただ連れて行ってもらっているだけでは意味がないので、もちろん私も石を当てはめていきました。 人力で。
私がコンピュータにアルゴリズムを使って問題を解かせるのは正直無理に等しいレベルだったのでこのような形になってしまいました。
予行演習で、全手動で石を当てはめていったわけですが、問題が発生しました。
出力させる際にアプリケーションがフリーズしてしまい、応答しなくなってしまうのです。
予行演習が終わった後、プログラムを見直したところ、ある一行で解決する簡単な処理を追加していないせいで、延々と同じ処理をしていました。
予行演習があったから良かったものの、もしこれが本番で起きていたらと思うとぞっとしました。
そんなことがあった後の予選でも、私は人力で石を当てはめていったわけですが、アルゴリズムの計算結果よりも良い結果を出せてしまいました。
自分の長年(?)ゲームで培ってきた(?)パズル力(?)やアドリブ力(?)に少し驚きつつも回答を提出しようとしたところ、
エラー:石が障害物にめり込んでいます。
と言われてしまいました。こんなことは、今までいくつか解いていた中でも今まで起こったことがないことで、非常に困惑しました。
すぐさまアルゴリズムの結果(これは正常なデータ)を再提出してもらうも、結果は敗退でした。
順位も、もし自分のものが提出できていたら第2戦目に進めていただけあって、非常につらい結果でした。
自分が担当していた部分にまだ問題が潜んでいて、これはアルゴリズムではなく自分に問題がある、と強く感じました。
が、結局、この問題が解決することはありませんでした。
そして迎えた二日目、敗者復活戦が始まる前に4,5回ほど同じ問題を解いたのですが、正常に出力できたであろうものはたった1度きりでした。
運に頼るか、アルゴリズムに頼るかという、自分の存在意義が薄れるかのようなことをするはめになってしまいました。
第1戦目は、なんと人力で空きマス5まで埋められ(その後じっくり考えて当てはめると、空きマス0まで埋められましたが)、意気揚々と提出したのですが、
エラー:石がほかの石と重なっています。
またかよ!!と思い、自分の無力さに絶望するも、アルゴリズムを再提出してもらいました。
結果は、見事第2戦進出でした。内心ほっとするも、複雑な心境でした。
第2戦目以降は、人力では数十分使ってやっとそこそこ埋まるような、つまり制限時間の5分なんかでは人力では到底無理な問題でした。
もちろん私も当てはめていっていたのですが、空きマス150ほどの結果となってしまいました。当然といえば当然ですが・・・。
迎えた第3試合目、提出してからというもののかなり緊張していたのですが、結果は・・・
準決勝に進むことができました。アルゴリズムを担当していなかった自分でも嬉しくなりました。
そして準決勝第1戦目、これまた人間に解かせることを全く想定していない問題が出てきました(至極当然ではありますが)。問題の内容はもう覚えてないのですが、非常に難しかったと思います。
結果は、敗退でした。アルゴリズムを担当していなかった自分は何もできなかった、などとこれまた複雑な心境でした。
自分の参加した試合以外の感想では、どの高専の方々も非常に白熱した試合で、こちらも驚愕するような結果がありました。
提出時間が0秒だったり、空きマスも使用した石の数も同じで、所要時間が2秒差だったり・・・。
競技プロコンは、最後まで何が起こるか全く予想のつかない「競技」で、まさに己の技術力、発想力が試される場なんだなあ、と感じました。
非常にいい経験となりました。
これにてこの文章を締めくくらせていただきたいと思います。ありがとうございました。
コメントを残す