はじめに
こんにちは。RECRUIT 日本橋ハーフマラソン事務局の田中、安藤、腰高です。
(『RECRUIT 日本橋ハーフマラソン』とは、株式会社リクルートが主催する競技プログラミングコンテストです)
2024年8月に RECRUIT 日本橋ハーフマラソン 2024夏 (
AtCoder Heuristic Contest 036
) をオンラインで開催し、その表彰式&懇親会を9月に実施しました。
今回の記事では、コンテスト開催に至るまでの問題作成の裏側や、表彰式&懇親会当日の様子をご紹介します。
ぜひご覧ください。
1. 日本橋ハーフマラソンについて
このコンテストは、2017年の第1回から継続的に開催してきており、今回で11回目になります。何よりもこだわってきたのは、コンテストの問題を内製すること。
当社の競技プログラミング好きのメンバーが問題準備から、表彰式や懇親会の運営も行っています。
当コンテストのスタッフの多くは、リクルートの「データ推進室」に所属するエンジニアです。
第1回の開催当時は、まだAtCoder上で開催される企業主催のヒューリスティックコンテストは存在していませんでした。他にあまりないタイプのコンテストを開催することで印象に残ることを狙い、ヒューリスティック型の問題を出題するコンテストとしました。
当初は6名のエンジニアでスタートしましたが、今回は20名以上のエンジニアが関わっており、年々スタッフの人数も増えています!
日本橋ハーフマラソン2024年夏のスタッフ
cozy_sauna, dpforest, eha, FLOPPY_30, frnfnts, hamray, hashiryo, japlj, kanra824, kys, n_knuu, roiti, samasama, shichinomiya, shiratty8, smiken, sugim48, suzume, TangentDay, tomerun, yupiteru, yusk, 他
日本橋ハーフマラソンのロゴは第1回開催時に誕生しました。スタッフによる手書きのロゴです。
1-1. キャラクター選手権
昨年夏には、スタッフ内で手書きのキャラクター選手権を開催し、キャラクターも誕生しました。
「ハーフマラソン」のイメージから想起されるのか、走っているキャラクターが多い印象でした(笑)
結果、6番のキャラクターが選ばれ、ハチマキをつけているキャラクターのエントリーが多かったことから、6番のキャラクターにハチマキ等をつけ調整、色付けも行い、最終的にこのようなキャラクターが誕生しました。作画をしたスタッフによると、日本橋の麒麟像のイメージから創造されたキャラクターなのだそうです。
日本橋ハーフマラソン開催の裏では、問題作成や景品検討、キャラクター作成等、部活動のような雰囲気で楽しく検討をしています!
2. 問題案の作成
問題案の管理はGitHub Enterprise上で行っています。
いくつか問題案のストックはあるのですが、基本的に「これまで選ばれることのなかった問題」のためそれぞれイマイチなところがあり、毎回なんとか新しい問題をひねり出している形です。
問題は次のようなことを念頭に置いて作成・選定しています。
- ルールが複雑過ぎない
- 上位層の中でも差がつくような深さを持つ
- 参加者各自の実力に応じた改善点がある
今回の問題では、3つ目の点に関して少々心配していました。サンプルコードで実装されている不思議なDFS(これは、ちょっと不自然なアルゴリズムですが改善ポイントを残すためあえて弱くしたものです)をBFSに変更することが最初の一歩として考えられますが、その次の改善が何をやるにもそこそこの量の実装が必要になり、壁になるかと思っていました。ですが結果を見ると、サンプルコードあるいはBFSで止まってしまった参加者が特別多かったわけではなく、大勢の方がその先の改善を実装されていました。コンテスト参加者の皆さんのアルゴリズム設計・実装力を感じます。
3. 出題準備
問題を出題するためには以下の作業が必要になります。
- 問題文の執筆と英訳
- ジャッジプログラムの作成
- 配布するRustテスターの作成
- Webビジュアライザの作成
- サンプルコードの作成
- テストケース生成方法の検討
スタッフの中で担当を割り振って準備を進めました。
並行して、問題のテストプレイを行いつつ制約などの細かい点を詰めていくのも行います。
この段階のテストプレイでは、強い回答を作るというよりは色々な解法のバリエーションを試すことを重視して考察・実装していきます。
本当は出題準備を始める前に問題の仕様が確定していると良いのですが、なかなかそうはいかずギリギリまで引っ張ってしまいますね…。
今回の問題では以下のポイントを調整しました。
- $N$, $T$ の値(固定にするか可変にするかも含め)
- $L_{A}$ の値の範囲
- 当初は $2 \times N$ で固定でしたが、小さい方が工夫の余地が生まれそうと思い下限を $N$ にしました
- $L_{B}$ の値の範囲
- 当初は $4 \le L_{B} \le 100$ でしたが、テストプレイをする中でこの値が大きいと簡単すぎることがわかり、 $4 \le L_{B} \le 24$ と小さい範囲に寄せました
- 解法の一つに、グラフの中央に毎回戻ることで次の目的地へ移動するための操作回数を1回以下に抑えるというパターンがあり、それが実現できるのがテストケースのうち20~30%とほどよい割合になるように設定しました
- 信号操作の仕様
- 当初は、 $B$ から $A$ ・ $A$ から $A$・ $B$ から $B$ のコピーもできる仕様でしたが、シンプルにするため $A$ から $B$ へのコピーに限定しました
- グラフの生成方法
- 密度や次数分布にある程度のバリエーションがあるようなランダムなグラフの生成方法を模索しました
4. コンテストの様子
2024年8月23日(金)から9月2日(月)の期間でコンテストを実施しました。ここでは、コンテストの様子を振り返ってみます。
初日からrhooさんが大きな差をつけて1位となり、徐々に差は詰まるもコンテスト期間の半ば過ぎまではトップをキープし続けていました。
(なお、前もってテストプレイで作成していた回答のスコアは、コンテスト開始から1日も経たないうちに抜かれました…)
終了3日前あたりからsoumatさんがスコアを一気に伸ばし、逆転しての優勝となりました。
回答の提出者は1103名と、過去の日本橋ハーフマラソンの中ではもっとも多い人数でした!
コンテスト終了後に参加者の皆さんが自身の解法について説明されているのを読むと、かなりさまざまな解法が見られ、各自アルゴリズムに工夫を凝らして問題に取り組んでいる様子を感じました。上位者の中でここまで解法に違いのある問題は初めて見た気がします。
コンテスト後、AHCラジオにて簡単な解説を交えながら振り返りをしています。
ぜひ合わせてご覧ください。
AHCラジオ: RECRUIT 日本橋ハーフマラソン 2024夏(AtCoder Heuristic Contest 036)
5. 表彰式&懇親会
2024年9月21日(土)には、入賞された方を実際にリクルートの本社オフィスにお招きし、表彰式&懇親会を開催しました。
昨年の夏に引き続き、2回目の表彰式&懇親会の開催です。
今回、上位入賞の方には景品としてドライポロシャツやショルダーバッグ、マイクロファイバークロス等を作成しました。
(景品の選定やデザインにはスタッフの意見も反映されています)
受付後は、オフィス41階にある半円形のアカデミーホールで、スタッフによる会社説明や座談会を行いました。
その後、5グループに分かれてオフィスツアーを実施。オフィスツアーでは、実際にデータ推進室のメンバーが働いている執務フロアや、社食、リフレッシュルームなどをご覧いただきました。
表彰式、懇親会は41Fの貸切スペースで行いました。
表彰式では総合順位、学生順位それぞれ5位の方までを発表!オフィスにお越しいただいた受賞者の方へは、スタッフより目録を贈呈いたしました。
懇親会では、すし職人の握るお寿司や食事を堪能しつつ、スタッフも交えてビンゴを開催。共通点を見つけてビンゴを完成させるというコンテンツで、交流の機会となり盛り上がりました。
各マスの質問はスタッフが考えています。
また、コンテストに参加いただいたみなさんのビジュアライザも投影。こちらも盛り上がったコンテンツの一つでした。
改めましてご参加いただいた皆様、ありがとうございました!
※以下、オフィスツアー、表彰式&懇親会の様子です。ぜひご覧ください。
6. 最後に
今回のコンテストや表彰式&懇親会について「楽しかった」というお声を参加者の皆様からたくさん頂き、スタッフ一同大変嬉しく思います。
頂戴したお声を活かし、より良いイベントを目指したいと思っています。今後もどうぞご期待ください。
またお会いできることをスタッフ一同、楽しみにしております!
一緒に働きませんか?
当社では、様々な職種のエンジニアを新卒・中途ともに募集しております。ご興味のある方は、以下の採用ページをご覧ください。
ソフトウェアエンジニア
田中 伸明
データアプリケーションエンジニアをしています。マラソンが好きです。
人事・スタッフ
安藤 美沙子
ブランディング、イベント企画運営・デザイン等を担当しています。
人事・スタッフ
腰高 里奈
エンジニアやデータサイエンティスト組織の専属人事です。新人研修やオンボーディング、ブランディングを担当しています。