AtCoderStudyBoosterはAtCoderの学習を加速させるためのツールです。問題をローカルにダウンロードし、テスト、解答の作成をサポートするツールです。Pythonが入っていることが必須です。Pythonが入っている環境なら、pip install AtCoderStudyBooster
でインストールできます。
このツールは以下のプロジェクトに強く影響を受けています。 online-judge-tools atcoder-cli これらとの違いですが、本ツールはAtCoderでのコンテストでの利用は想定しておらず、初心者の学習のサポートのみを意識しています。そのため、現時点で提出機能は備えていません。また, Chat GPT APIによる解答の作成サポート機能を備えています。
ABCコンテストの223から226のB問題だけを集中的に練習したい場合、次のコマンドを実行します。
❯ atcdr download B 223..226
コマンドを実行すると,次のようなフォルダーを作成して、各々のフォルダーに問題をダウンロードします。
B
├── 223
│ ├── StringShifting.html
│ └── StringShifting.md
├── 224
│ ├── Mongeness.html
│ └── Mongeness.md
├── 225
│ ├── StarorNot.html
│ └── StarorNot.md
└── 226
├── CountingArrays.html
└── CountingArrays.md
❯ atcdr download 223..225 A..C
のように実行すると以下のようなフォルダーを生成します.
.
├── 223
│ ├── A
│ │ ├── ExactPrice.html
│ │ └── ExactPrice.md
│ ├── B
│ │ ├── StringShifting.html
│ │ └── StringShifting.md
│ └── C
│ ├── Doukasen.html
│ └── Doukasen.md
├── 224
│ ├── A
│ │ ├── Tires.html
│ │ └── Tires.md
│ ├── B
│ │ ├── Mongeness.html
│ │ └── Mongeness.md
│ └── C
│ ├── Triangle.html
│ └── Triangle.md
└── 225
├── A
│ ├── DistinctStrings.html
│ └── DistinctStrings.md
├── B
│ ├── StarorNot.html
│ └── StarorNot.md
└── C
├── CalendarValidator.html
└── CalendarValidator.md
MarkdownファイルあるいはHTMLファイルをVS CodeのHTML Preview, Markdown Previewで開くと問題を確認できます。VS Codeで開くと左側にテキストエディターを表示して、右側で問題をみながら問題に取り組めます。
問題をダウンロードしたフォルダーに移動します。
❯ cd 224/B
移動したフォルダーで解答ファイルを作成後をtestコマンドを実行すると, サンプルケースをテストします。
~/.../224/B
❯ atcdr t
WAの場合は以下のような表示になります。
~/.../224/B
❯ atcdr open
を実行すると、デフォルトのブラウザーで問題のページをを開きます。AtCoderのサイトで問題を確認したい場合や解答を提出したい場合にこのコマンドを利用しましょう。
~/.../224/B
❯ atcdr g
で解答をGPTで生成します。Chat GPTのAPIキーが必要です。さらに、生成されたファイルはサンプルケースが自動でテストされ、テストをパスしなかった場合、テスト結果がGPTにフィードバックされ解答が再生成されます。
GPTとプログラムとのやり取りのログはJSONファイルで保存されます。また, APIの推定利用料金もプリントします。
AtCoder生成AI対策ルールによるとAtCoder Beginner Contestにおいてに問題文を生成AIに直接与えることは禁止されています。ただし、このルールは過去問を練習している際には適用されません。
現時点で本ツールにはログイン機能がないため、コンテスト中の問題に対してdownload
コマンドは利用して問題をダウンロードすることはできません。generate
コマンドはdownload
コマンドに依存しており、ダウンロードした問題のHTMLファイルをパースしてGPTに解釈しやすいmarkdownを与えることで実現しています。したがって、このコマンドがAtCoder Beginner Contest中にAtCoder生成AI対策ルールに抵触することはありません。
完全なCLI環境方向けのコマンドです。
~/.../224/B
❯ atcdr md
を実行すると, 問題をプリントします。
~/.../224/B
❯ atcdr t *.py
でフォルダー内にあるすべてのPythonファイルを一度にテストします。
~/.../224/B
❯ atcdr t mon.py mon.c mon.cpp
フォルダー内に複数ファイルある場合は、インタラクティブに選択できます。
~/.../224/B
❯ atcdr t
~/.../224/B
❯ atcdr t
複数のファイルが見つかりました.ファイルを選択してください:
十字キーで移動, [enter]で実行
❯❯❯ mon.py
mon.c
mon.cpp
--lang
オプションを使うと、生成したいプログラミング言語を指定できます。
~/.../224/B
❯ atcdr generate --lang rust
デフォルトでatcdr generate
コマンドは生成されたコードをテストしますが、テストせずにコードのみ生成できます。
~/.../224/B
❯ atcdr generate --lang rust --without_test