競技プログラミングに生成AIを使うことは、従来は「ルールの網を抜ける非合法感」が高いものでした。しかしながら、2024年末〜2025年初頭の以下のできごとにより、急速に「正当なテクニック」になってきたようです。
- AtCoder生成AI対策ルール - 20241206版 の制定
- ChatGPT o3-miniの無償提供
本記事では、AtCoderで生成AIをフル活用する「正当なテクニック」をまとめてみました。
1. AtCoder生成AI対策ルール20241206版の概要
AtCoder生成AI対策ルール20241206版は、以下のような内容です。
詳細はリンクを参照ください(リンク先の版は、今後更新される可能性があります)。
https://info.atcoder.jp/entry/llm-rules-ja
1.1 適用範囲
以下の適用範囲では、項1.2に記載の内容を除き、生成AIの利用は原則禁止されます。
- ABCおよびARC Div2(簡単な方)のコンテスト実施中に適用されます
- コンテスト実施中であれば、Rated / UnRatedどちらにも適用されます
本記事では、上記の適用範囲外について言及します。
なお、Goolge検索で表示されるものは、生成AI利用の定義から除外されます。
1.2 正当な利用
適用範囲において、禁止されない行為として、以下が明示されています。
- 問題文の翻訳
- コード補完ツール(例:Copilot)
- プログラミング言語の変換(例:Python で書いたコードを C++ に変換)
日本人がAtCoderを使う前提では、翻訳は不要と考えます。また、コード補完ツールの利用は、プログラマであれば2年前くらいから常識化されており、解説も多い領域です。よって、本記事では、プログラミング言語の変換、のみを言及対象としています。
2. 生成AIの活用
ルールに則った範囲で、便利な活用方法を例示します。
2.1. プログラミング言語の変換
プログラミング言語の変換は、競技種別関係なく競技中に使えるテクニックです。さらに、今回のルールでプロンプト含め厳密に定義されたものであるため、将来的にルールが改正しても問題無く許可される可能性が高いです。そのため、最強のテクニックであると言えるでしょう。
特にPython(PyPy)において、以下記事でまとめているように、特定の処理は遅くなりがちであるため、効果が高いです。
ニーズが最も多いと考えられる、Python → C++ において、AtCoderルール公式プロンプトを示します。
The following code is what I wrote to solve a problem in an AtCoder contest. When using generative AI to translate programming languages during an ongoing AtCoder contest, there are the following restrictions: "It is absolutely necessary to include the original code at the beginning of the submission as a comment or similar." "Only translations that do not alter the algorithm are permitted. In particular, any changes that would affect the time complexity are strictly prohibited." For any parts that cannot be directly translated, please mark them as "FAILED" and leave them unconverted. Following these strict AtCoder rules, please translate the following code from Python to C++23(Clang).
結果は以下の通りです。ライブラリなども適切に変換されます。
なお、小数問題はうまく変換してくれない場合があるようです。
2.2. コンテスト実施期間外での活用
コンテスト実施期間外での活用も、将来的にルールが改正しても問題無く許可されると考えます。
2.2.1. 精進での利用
難しい問題を易しく解説してもらうといった用途が考えられます
2.2.2. ライブラリ整備
ライブラリ整備で活用する猛者もいらっしゃるようです。長期的に整備していくライブラリの特性と、短期的刹那的な生成AIのコードの特性は、相反するものであるため、成功するか興味深いと考えます。
2.3. 適用範囲外コンテストでの活用
現在、適用範囲外とされているコンテストでの活用です。これは、今後の生成AIの進化によって、将来のルールではできなくなる可能性が高いと考えられます。今のうちに使いましょう。
2.3.1. AHCでの活用
現在、急速に開拓されている分野であり、以下のような応用が見られています。特に実装時間が限られるとともに、安定した成績ではなく一発当てることが求められる短期AHCにおいては、解答コード作成にチャレンジする価値は高いものと考えます。
- 問題文の概要解説
- 問題文をもとにした解法の方向性の提案
- 解法を指定した解答コードの作成(特に短期)
- カスタムビジュアライザの作成
2.3.2. AGC、ARC Div1での活用
筆者はアルゴよわよわですので、これらのコンテストへのRated参加資格を持っていませんが、以下のような用途で使えるものと思います(正解そのものを求めることができない、という前提です=だからこそ利用許可されているため)。
- ヒントとなる数学などの関連情報の検索
- 愚直解での実験出力と、実験出力から帰納的に解を発見
3. 今後の展望
今後の生成AIの進化によって、正当なテクニックが増えていくのは、とても興味深いです。それによって、ルール改正も行われると思います。一方、生成AIの利活用もプログラミングテクニックと捉えれば、同じコンテストで生成AI利用制限あり版と利用無制限版が併存する、といった将来像も考えられます。どうなっていくか、楽しみですね。