企画者目線で振り返るestie プログラミングコンテスト2022

エンジニアのmatsu7874です。今年を振り返ってみると私が関わった一番大きなイベントはAtCoderでestie プログラミングコンテスト2022(AtCoder Heuristic Contest 014)を開催したことでしょうか。700人を超える方に参加いただき、久しぶりの2週間コンテストを楽しんでもらえたのではないかと思います。

また私個人としてはAtCoderでコンテストを開催するのが初めてでしたので、コンテスト運営側として無事に開催できるのか、ハッシュタグが盛り上がるか、解説放送もうまくいくかと心配事が尽きない時間が長く続きましたが、概ね好意的なリアクションをいただき、後日行った参加者限定の会社紹介イベントにも予想を超える人数が参加してくださり嬉しく思っています。

前夜祭

これまでヒューリスティック系のコンテストに出たことがない人にも興味を持って参加していただきたい。そのための背中を押せるコンテンツとして、コンテスト開始前日に前夜祭イベントを企画しました。110名の方に参加申し込みいただき、非常に高い参加率でご参加いただきました。

estie社員のkenkooooさんとkageyuさんにAHC005のライブコーディングをしてもらって、私が方針や実装を(解説ではなく)質問していく30分ライブコーディングがメインコンテンツで、私はマジでみんな参加してくれの気持ちで前座とお土産のLTを行いました。

前座LTはローカルビジュアライザの構造体をコピペできるのでRustで書くと初期解がすぐ作れるんですよ!という内容で、ローカルビジュアライザのファイル構成の解説や構造体の解説をしました。長期コンテストだと要素が多くて実装が面倒くさいなと思う人もいるだろうということで、初めての方もローカルでの環境構築がやりやすいように紹介しました。

ライブコーディングでは2人の画面を共有してもらって参加者は好きに切り替えられうようにしつつも、私が見たい方を見ながら話を聞くスタイルでやってみました。kenkooooさんはRustで実装しながらオーディエンスから質問があったグリッド探索を!0wrapping_addを使って行う方法を解説していて流石でした。Rustは配列のインデックスがusizeという非負整数の型で指定する必要があり、x=0のとき座標が-1になる方向にマスがないのをケアする処理をif w <= x.wrapping_add(!0) {continue;}で書けるよという話をライブコーディング中にされていました。 kageyuさんは型ヒントをつけたPythonを使っての実装でした。「行った道を逆順で戻ればスタート地点に戻れますね」とか言いながらサクッとDFSを実装し、さらに文字列処理で行き止まりに入らないようにする工夫をしていて賢い人だなと思いました。見るだけではなく同時にコーディング参加してくださった方もいて楽しかったです。またやりたいです。

お土産LTはAHCで手元で複数ケース実行するためのスクリプト · GitHubみたいな複数のテストケースを一気に実行して集計できるスクリプトを用意しておくと便利なんですよ!という話をしました。たくさんのケースを実行して自分のプログラムが苦手にしているケースを見つけられると問題解決の糸口になったりしますよね。本番で使ってくださった人もいたようで嬉しいです。

コンテスト

問題概要

コンテストに参加していない方に向けてざっくり問題を説明します。新しく黒丸を置くと既に黒丸が置かれている3点と繋いで軸に平行or 45度傾いた長方形が作れるような格子点に黒丸を置いていきましょう。ただし既に作った長方形の辺上に黒丸を置くことはできません。中心から遠い点に置いたほうが大きな点数がもらえます。点数を最大化してください。というような問題です。今回は隠された情報や誤差などはなく、与えられた初期盤面から順番に手順を行っていくタイプの問題でした。

解説放送・参加記

詳しい解説はAtCoderのwataさんによる解説放送を御覧ください。参加者全員の上を行くwriter解を解説いただき、むちゃくちゃ面白かったです。なぜビームサーチよりも焼きなましのほうが点数が伸びるのか、ランダムプレイアウトの方針など勉強になりました!

また多くの方が参加記を書いてくださっています。いろいろな人がそれぞれの方針・コンテスト中の向き合い方を書いてくださり参考になります。ありがとうございます。

私は解説放送に参加するのでコンテスタントとしては参加せず、SNSで #AHC014 を眺める仕事をしていました。estie プログラミングコンテスト2022(AtCoder Heuristic Contest 014)まとめに皆さんのツイートをまとめているので、コンテストの雰囲気を思い出したい方はぜひご覧ください。

また解説がない状態で皆さんの提出を見ながら2週間を過ごす不思議な期間を経験しました。上位陣の解法はもちろんのこと、コードに潜むローカル実行のやりやすさの工夫にびっくりしました。環境変数を使ってローカルではすごい数のデバッグ用の情報を出力したりオリジナルビジュアライザ用の画像書き出しを行ったりしていて、ABC系で求められているスキルとは異なるエンジニアリングスキルが発揮されているなと感じました。AHC系のコンテストを通してそういったスキルも身に着けていけると素敵ですね。

その力、estieで活かしてもらえませんか!

estieではエンジニアとして一緒にプロダクト開発に取り組んでいただける方を募集しています。estieは不動産業界のDXを推進するシステムを開発している会社です。複数のSaaSを開発・運用しておりエンジニアとしても、顧客・同僚から刺激をもらいながら楽しく働ける会社だと感じています。不動産業という歴史ある非常に大きなドメインに向き合っているため、やりたいことに対して人が足りていない状況です。何から手を付けていけばいいのか優先順位を一緒に考えながら、圧倒的に使いやすくて性能の良いシステムを開発しませんか。

jobs.atcoder.jp

hrmos.co

hrmos.co

ご応募お待ちしております!

© 2019- estie, inc.