ICFPC2025参加記

ICFPC2025参加記 こんにちは、Digital Experts でエンジニアをしている仲吉です! この度、Digital Expertsと丸紅デジタルイノベーション部の社員7名、そしてインターン生7名1で構成されたチーム「DIgital Experts」として、ICFPC2025に参加しました。 Digital Expertsは2023年に設立された丸紅の機能子会社で、会社としてICFPCに参加するのは初めてです! 初参加にあたってどのように取り組んだのかをご紹介します! また、社内で定期的に開催しているLT会でもICFPCの概要や取り組んだ解法などについて発表しました! その際の資料も部分的に記事に用いています。 コンテスト概要 ICFPC2025(ICFP Programming Contest 2025) は関数型プログラミングに関する学会が毎年開催しているプログラミングコンテストで、次のような特徴が有ります! 少し変わった問題が出題される チームの人数や所属に制限がない コンテスト時間は72時間 途中で問題設定に変更が加わることがある 人数が多い方が有利なこともあるため人海戦術を取りたいのですが、弊社だけでは十分な人数を確保できませんでした。 そのため、弊社社員だけではなく、丸紅DI部社員やインターン生にもお願いして同じチームとして参加してもらいました! 開催時間は日本時間で金曜21時から月曜21時まで。全員が最初から最後まで参加するのは難しく、途中参加・途中離脱するメンバーがほとんどでしたが、DE社員は全員最初から最後まで参加しました! 準備 宿 参加にあたり、みんなで集まって作業できる環境が重要です。また、「温泉に入りたい!」という強い要望があったため、温泉付き、または近くに日帰り温泉がある宿を探しました。 条件を満たす宿は少なく、ICFPCへの参加を決めたのが開催約1ヶ月前であったため、その少ない宿もほとんど予約が埋まっていました。最終的には、72時間連続で会議室を借りられ、ほぼ24時間入浴可能な温泉付きの施設に決定しました。 施設は海沿いにあったため、眺めもよかったです! 施設から見える風景 開発環境 問題によっては計算リソースを有効活用できると有利になるため、AWS環境を用意し、コンテスト中はメンバー全員が自由に利用できるようにしました。 実際に重い探索を伴う問題が出題されたため、高性能インスタンスを立てて活用しました。さらに、問題上アクセスする必要のあるAPIがEUサーバーにデプロイされていたため、応答速度の面でも多少有利に働きました。 コンテスト中の様子 コンテスト前 参加者は宿泊施設に現地集合としました。 コンテスト初日は台風の影響で東海道新幹線が大きく遅延していたため、当初は19時ごろ到着予定でしたが20時半ごろ到着となり、大急ぎでコンテストに向けて準備をしました。 1日目(最初の24時間) まず、問題が公開されてからしばらく、各自で問題を把握して練習問題を解く時間を設けました。 これは他の人の解法に影響を受けず、多様なアイデアを出すためです。 しかし、チーム全員が共通のステートフルなAPIを利用する必要があり、「誰がAPIを使うかを宣言してから実行する」という運用になり、効率がとても悪かったです。 後ほどの反省点にも含まれますが、この段階で各自が使えるシミュレータを実装し始めるべきでした…… 1日目の時点での問題概要は次のようなものです。 1日目の問題概要 $N$ 個の部屋からなる図書館があり、各部屋には $0$ から $5$ の番号が付いた $6$ 個のドアがあります。 ドアとドアはつながっていて、他の部屋のドアだけではなく同じ部屋のドア、もしくは同じドア自身とつながっている可能性があります。そして、あるドアを通ると接続先のドアがある部屋に移動します。 部屋はその部屋に書かれたマークでしか区別することができず、マークは A, B, C, D の4種類です(実際には、A, B, C, D ではなく、0, 1, 2, 3 が使われていました)。 目標はこの図書館の地図を作ることです。ここで、地図というのはすべてのドアに対してどのドアと接続しているかを表したものを指します。 ...

2025/12/05 · Digital Experts