ハル研究所プログラミングコンテスト

年に一度のプログラマーの祭典

1995年にプログラマー数人によるごく内輪の遊びとして始まったハル研プロコンは、熱い戦いを重ね、ついには会社の公式イベントとなりました。普段はそれぞれの仕事に取り組むプログラマー達が、この時ばかりは同じ問題に取り組み、プログラミングの技を競い合うことで、楽しみながらスキルアップを図っています。 また、2003年からはプログラマーを目指す学生の皆さんにも参加を求め、みんなで真剣勝負を楽しんでいます。

参加者の声

プロコンの魅力は、みんなで同じ問題に取り組み、なおかつ1つの問題をとことん突きつめて競い合えること。仕事では規模の大きいプログラムをみんなで分担して作るため、分かりやすくきれいにコーディングしていく必要があるのですが、プロコンではこれが全くの逆。たとえコードの見栄えがぐちゃぐちゃでもスコアをとことん追求し、仕事ではとても試せない新しい思いつきや常識破りもどんどん試しています。

ハル研プロコン2021の開催はありません。

  • 問題ウサギのかけっこ修行

    ウサギのかけっこ修行

    ウサギを上手くジャンプ移動させてフィールドに散らばる秘伝の巻物を集める問題。フィールドの平地と池では移動速度が雲泥の差となるので、どのような移動経路をとるかがポイントに。また、巻物を取るとジャンプ力が少しアップするので、巻物を取る順番を工夫することも好成績への鍵となりました。平地、砂地、池などが入り組む複雑な地形の中、ウサギの動きをどうしていくか、付属のビューアを活用して様々な試行錯誤が行われていました。

  • 問題カメの早食い競走!

    カメの早食い競走!

    お腹をすかせたカメたちに、広場に散らばっているエサを素早く効率よく食べさせるという問題。問題はシンプルながらも、「高いところにあるエサはカメが積み重ならないと食べられない」などの条件があり、「どの順番でエサを食べさせるか」、「どのカメにどのエサを食べさせるか」など、工夫のしどころが多いテーマでした。 また当社スマホゲーム『歩数で勝負!!カメさんぽ』の世界観を活用したサイトも話題になりました。

  • 問題がんばれ!街のお菓子屋さん

    限られたオーブンのスペースでなるべく多くのクッキーを焼く、という配置を効率化する問題。「大きいクッキーを焼いた枚数を最大化」しつつ、その上で「小さいクッキーを焼いた枚数を最大化」していくこと、さらに「焼き時間」を Z 軸とすることで3次元の充填問題として考えることが高得点への鍵となりました。開催期間中に焼かれたクッキーは2億枚以上!実行委員会の想定を超える焼き上がりとなりました。

  • 問題UFOのお手伝い

    複数のUFOを操って、点在するすべての家にオレンジの箱を届けるという問題。素早く箱を届けるには、箱を多く積める「大型UFO」と、移動が速い「小型UFO」のそれぞれの特長を活かすことや、フィールド上の家の分布に応じて配達を無駄なく分担させることが肝になりました。また、特設サイトに登場するUFOのキャラクターも話題になりました。

  • 問題小惑星群から地球を守れ!

    宇宙船を操縦して、地球に迫り来る小惑星群を全て破壊するという問題。小惑星を破壊するにはレーザーを撃つか、体当たりをするかの二通りというシンプルなルールながら、宇宙船の移動のさせ方やレーザーを発射するタイミングなど、考える要素が多い問題でした。探索の効率化と、より多くの探索を行うための最適化をどれだけ巧みに行えるかがキーポイントになりました。

  • 問題宅配便

    宅配ドライバーとなって、燃費を抑えつつ街を効率よく走り回り、荷物を配達するという問題。荷物を届ける順番と届ける時間帯の組合わせ爆発をどう解決するかが重要なポイントでしたが、早々に最適解に到達した参加者達により、後半は処理時間短縮の熾烈な競争となりました。また評価環境を一新し、C++11や標準ライブラリも使用可能にしたことで、投稿されるソースもバラエティに富んだものになりました。

  • 問題見習い忍者の水蜘蛛レース

    水上の見習い忍者を操作し、一定の順序で蓮を踏みながらより早くゴールを目指す問題。「加速」と「何もしない」という2つの操作から選ぶだけのシンプルな問題ながらも、動きにランダム性を持つ先輩忍者や、移動方向を変化させる水流という要素が絡み、ゲーム性の高い問題になりました。また、昨年好評だったビューアを今年も付属しました。

  • 問題宇宙ゴミを除去せよ!

    クリーナーロボットを操り、宇宙ステーションの外壁に付着した宇宙ゴミをどれだけ早く除去しきるかを競う問題。クリーナーロボットの回転が遅いという特徴を考慮しつつ、いかに効率的なルートを選択していくかというアルゴリズム勝負になりました。また、問題パッケージにビューアが付属されるという初めての試みもありました。

  • 問題遺跡からの脱出

    古代遺跡のお宝を手に、部屋に仕掛けられたトラップをかいくぐりつつ、いかに素早く脱出できるかを競う問題。トラップを一時的に止められるお宝を利用し、最短の経路探索を行うアルゴリズム勝負、そして最適解に達してからはタイムアタックとなる、二本立て勝負となりました。

  • 問題算数散歩

    「足し算」や「かけ算」の数値が描かれたマスが配置されたフィールドを、自由に移動しながら計算を続けて高いスコアを目指す、様々な試行錯誤が必要となる問題。高得点を取るためには、問題の特性をうまくとらえて、いかに効率的にルートを探索できるかどうかが勝負の鍵となりました。

  • 問題アリと砂糖

    ステージ上のアリを操作し、次々に降ってくる砂糖をできるだけたくさん食べて高得点を目指す、遊びとゲーム性の詰まった問題。個々のアリの行動を最適化するだけでなく、限られたアリの記憶領域をうまく使ってアリ同士の連携をとり、集団としてどのように動かすかの様々なアイディアと、参加者のパラメータ調整への情熱が勝負を決しました。

  • 問題玉ころがし

    板を傾けて上に載っている玉を動かし、板のところどころに開いている穴や端から玉を落とさないようにゴールに導いて高得点を目指す、ゲーム性の高い問題。ランダムで決定する板の形状や穴の数を考慮し、華麗なコーナリングやジャンプを決めつつ、いかにして玉を落とさず最短経路を導き出せるかのアルゴリズム勝負となりました。

  • 問題ブドウ狩り

    ブドウ園を舞台に様々な性質の複数のAIと競い合い、AIに先駆けてよりたくさん、より質の良いブドウを狩って、そのブドウの総合得点を競うという問題。効率よくブドウを狩るために、AIの種類や数、ブドウ園の状態によって作戦を変えるなど、様々なアイディアを駆使したアルゴリズムが勝負を決しました。

  • 問題クロスワード

    完成したクロスワードパズルから単語を全部抜き取り、文字の無い白と黒のマスだけになったボードに、抜き出した単語を戻すという速度を競う問題。入る場所が限られている単語や、他との繋がりが多い単語を先に処理するなど、いかに効率よく探索できるかが勝負の鍵となりました。

  • 問題ブースの席替え

    ハル研社内で行われるブースの席替えにおいて、全員の移動がなるべく早く終わるように、移動の順番を決める問題。非常に難しい問題で、解き方もいろいろありましたが、空きブースをいかに効率良く利用するかが勝負の鍵となりました。

  • 問題橋を渡る

    8個の島にランダムにかかっている橋を、全部1回ずつ渡れるかどうか判定し、渡れる場合はその経路を求めるという、速度を競う問題。解き方は一般的な一筆書きの問題に似ていますが、一方通行の橋もあるので、それをどう処理するかが鍵でした。

  • 問題焼肉

    限られた大きさの鉄板上に効率よく肉を並べて、設定ターン内に、できるだけ多くの肉の面積を焼くという問題。より深く先読みした方がスコアが良くなるので、制限時間をギリギリまで使って効率よく枝刈りしたり、鉄板の評価を工夫したりするという、高速化の勝負となりました。

  • 問題五角形の凹凸判定

    与えられた五角形が凸多角形かどうかを判定する速度を競う問題。シンプルな問題だったため、上位者が皆同じ解き方になってしまい、ガチンコのチューニング勝負となりました。