Blog

2016.06.17

PFI/PFNのパーティーでプログラミングビンゴ大会を開催しました

Tag

Yuya Unno

Researcher

海野です。先週の金曜日に、PFIの設立10周年およびPFI/PFNのオフィス移転を記念してパーティーを行いました。主に、株主様や取引先様、また社員のご家族を呼んだパーティーで、ホテルのパーティー会場を借りて行いました。 この中でプログラミングコンテストビンゴ大会という、おそらく日本で(世界で?)類を見ない余興を実施しました。 今日は当日の様子と、開催の経緯をお伝えしようと思います。


IMG_8252

まず、プログラミングコンテスト(競技プログラミング)をご存じない方のために解説します。 プログラミングコンテストは、課題となる問題が与えられて制限時間内にその課題を解くプログラムを作成します。 問題は複数与えられるのが普通で、解いた問題数や、解くのにかかった時間で勝敗が決定します。 課題と言ってもソフトウェア開発的なものではなく、数学の試験に近いものが多く、その場で時間・空間計算量を見積もってアルゴリズムを考案したり、数学の定理を使って解法を考案しないと解けないような問題が多いです。 有名なコンテストに、大学対抗のICPCや、企業の運営するTopCoderや、国内だとAtCoderがあります。


IMG_8279

今回の余興は、1チーム2人ペア、5チーム、計10人で競いました。 ICPC同様、1チームに1台のマシンしか支給されません。 いずれかの競技者がマシンに張り付き、もう一方がペアプロとするのか、次の問題を考え始めるのかは競技者次第です。 問題の難易度はバラバラなので、難易度を見積もってどの問題から解き始めるかで勝敗も大きく変わります。 余興のプログラムなので競技時間は短めの30分、問題は少し簡単目の4問が出題されます。 これでどうやってビンゴをやるのかというと、各チームが問題を正解すると、対応するビンゴのマスが開けられます。 例えばチームBが問題2を正解すると、B-2のマスが空きます。 4問全問正解すると、B-☆のマスが開きます。 合計25種類のマスが存在し、この組み合わせでビンゴは実施されました。 この特殊ビンゴのために、ビンゴカードは特注で制作して頂き、コンテストのシステム自体はAtCoder様のシステムを利用しました。 回答のプログラムの提出のタイミングや、そのプログラムの正誤の判定(提出したプログラムが間違っている可能性がある)をリアルタイムにスクリーンに表示するための仕組みを作成しました。 それに合わせて、実況・解説の私が状況を説明しつつ、ビンゴを実施しました。ちなみに、当日の問題はこちらです。是非挑戦してみてください。


card

競技参加者は、主に過去にICPCに出場経験のあるPFI/PFNの社員で構成されます。 もちろん社長の西川、副社長の岡野原も出場しました。 西川は、この日のために休日に練習していたようです。 私は西川がコードを書く姿を5年ぶりに見ました。 なかなか貴重な映像になったのではないかと思います。 最終的な結果は、大方の予想通り若手チーム(SuperCon優勝経験の奥田と、ICPC世界大会出場経験の松元)が優勝する一方、社長チームが3位に食い込む大健闘をみせて大変盛り上がりました。 ちなみに、参加者には順位に応じてコスプレしていただきました。1位の若手チームはハリーポッターです。


IMG_8350

このプログラミングビンゴ大会は、そもそも世間には一般的に知られていないプログラミングコンテストというものをいかに一般人向けのコンテンツとして仕上げられるのかという、ちょっと不思議な挑戦でした。 もともと、パーティーの余興をやろうという話が4月くらいに持ち上がったときに、PFI/PFNならその源流である(PFIはもともとICPC世界大会で知り合ったメンバーで起業したという経緯があります)プログラミングコンテストをするに決まっているだろうと盛り上がったところから始まります。 ここに、ビンゴ大会にすればゲストも参加できるという発想が加わり、プログラミングビンゴ大会というアイデアが生まれました。 最初にこの話をAtCoder様に持ちかけた時も非常に面白そうということで話が盛り上がり、社長の出演も決まりました。プログラミングコンテストを知らない一般の方にどうやって伝えるか、いつ解けるとわからない競技でビンゴがちゃんと成立するのかなどを、うまく調整する必要がありましたが、結果的にはなかなか盛り上がったのではないかと思います。ちなみに、正解者にはちゃんと風船も用意しました(ICPCでは問題に正解すると風船が上がる)。


IMG_8365

私も、世界大会出場には届かなかったものの、もともとICPCに何度も挑戦していた身であります。 情報科学という分野は理論と実践が密接に交わる領域だと考えております。 プログラミングコンテストは、情報科学に対する幅広い知識に加えて、それを実現するための実装力の両方が求められる、大変よい競技だと思います。 今後ぜひ、技術系企業にこのプログラミングビンゴ大会が広まっていったらよいですね。

Tag

  • Twitter
  • Facebook