Skip to content

nosuz/AtCoder_study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

163 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AtCoder の解答記録

AtCoder Beginner Contest(ABC)の問題を解いた記録です。基本的に正解できたコードのみが登録されていますが、一部不正解だが記録のために commit されたコードも入っています。

回答成績

  • ✅: コンテスト時間内に正解
  • 🙆: コンテスト外で正解
  • 📖: 解説などに頼って正解
  • ❌: 正解ではないが、とりあえずコミット
コンテスト パフォーマンス A B C D E F
ABC392 🙆 🙆 🙆 🙆
ABC399 🙆 🙆 🙆
ABC400 241 🙆 🙆
ABC401 239 🙆
ABC402 188 🙆 🙆
ABC403 582
ABC404 297
ABC405 622
ABC406 487 🙆
ABC407 478
ABC408 260 🙆
ABC409 207 🙆
ABC410 568
ABC411 550
ABC412 328 🙆
ABC413 337 🙆
ABC415 399 🙆 🙆
ABC416 322 🙆
ABC417 267 🙆
ABC418 459
ABC419 806
ABC420 391
ABC422 🙆 🙆
ABC430 🙆 🙆 📖
ABC431 🙆 🙆 🙆
ABC432 🙆 🙆 🙆
ABC433 🙆 🙆 🙆
ABC434 🙆 🙆 🙆 📖
ABC435 🙆 🙆 🙆
ABC436 🙆 🙆 📖 🙆
ABC437 🙆 🙆 📖 🙆
ABC438 🙆 🙆 🙆 🙆
ABC439 262 🙆 🙆
ABC440 309 🙆 🙆 🙆
ABC441 839 📖
ABC442 551

Dev Container

Dev Container になっています。コンテナを作成する手順は、次のとおりです。

  1. このレポジトリをクローンする。
  2. UID と GID を確認する。

もしローカルの UID と GID が次の表と異なる場合は、次のいずれかのコマンドを実行してローカルの ID がコンテナに反映されるように設定してください。この操作がないと、docker image の作成に時間がかかり、作成された image のサイズも大きくなります。

ID
UID 1000
GID 1000
  1. VSCode で開き���コマンドパレットからDev Containers: Rebuild Containerを実行する。
bash .devcontainer/generate_env.sh
# or
python .devcontainer/generate_env.py

以上で、Python 環境の���、問題の入出力例を取得するプログラムが使えるようになります。

問題の入力例と出力例の収集

setting.pyコマンドを使うと、Firefox を使用して指定コンテストの問題ページから提示された入力例と出力例を取得して、その例をプログラムのテンプレートに埋め込むことがでいます。このテンプレートを使ってコードを作成すると、validate.pyコマンドで解答が期待通りか検証できます。

ただしこのプラグラムを実行する前には、いくつか事前の準備が必要です。

Firefox 画面の表示許可

Firefox の画面を表示させるには、ローカルの X11 サーバが外部からの接続を許可する必要があります。そこでコンテナを実行しているマシン(注意:コンテナ内でない)上で次のコマンドで許可をしておきます。。

xhost +local:

Firefox のプロファイル作成

問題ページの巡回には、Firefox に専用プロファイルseleniumを使用します。次のコマンドで Firefox を起動した後、AtCoderにログインしておきます。

firefox -p selenium

もしプロファイルがない場合には、プロファイル選択画面が表示されます。Create Profile...を選択して、seleniumという名前のプロファイルを作成します。

プロファイルを保存するフォルダ(ディレクトリ)は、/home/vscode.mozilla以下にしてください。ここ以外を選択すると、プロファイル内容が消えてしまいます。

入出力例の収集

各問題の入力例と出力例は、次のコマンドで収集して、コメントとして埋め込んだ解答プログラムのテンプレートを作成します。

# ABC 123の例を収集
./setting.py abc123

実行すると Firefox が起動して、各ページを自動的に巡回します。ただし Firefox は Headless mode で動いているので、画面は表示されません。

AtCoder のコンテスト開催中は、そのコンテストに参加登録したユーザでないと対象コンテストの問題ページを見ることができません。そのため事前にログイン情報を Firefox のプロファイルに保存しておく必要があります。

解答コードの検証

setting.pyが作成したテンプレートには、問題の入力例と期待される出力例が挿入されています。そこで、このテンプレートを使って解答コードを書くと、validate.pyで期待した出力が得られるかコードを検証できます。

./validate.py ABC_408/ABC408_A.py

OK と表示されれば、期待される出力例と一致しています。

一部の入力例についてのみ検証する場合は、--limitオプションを使用します。例えば入力例 1 についての場合は、次のようにします。

./validate.py --limit 1 ABC_408/ABC408_A.py

コンマで番号を区切ることで、複数の例を指定することも可能です。

./validate.py --limit 1,3 ABC_408/ABC408_A.py

全ての出力例がOKとなったら、AtCoder に提出します。

About

My codes for AtCoder contests

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published