競プロ ( 主に Atcoder ) を C++ で取り組むためのテンプレート及び環境.
設定済みのVScode拡張機能(テンプレート生成, 補完, スニペット)の利用やテスト/提出コマンドのシェルスクリプトの実行が可能.
template.cppをコピペして利用.
- Python : 3.x
C++コンパイル/フォーマット用ライブラリのインストール及びojツールのインストールが必要.
Ubuntu
sudo apt update -y && sudo apt upgrade -y
sudo apt install -y make gdb build-essential clang-format gfortran libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
# install cui tool for atcoder
pip install online-judge-tools
# restart shell
exec $SHELL -l
# login
oj login https://atcoder.jp/
Mac
brew update && brew upgrade
brew install gcc
# use gcc installed by brew
sudo ln -sf $(ls -d /usr/local/bin/* | grep "/g++-" | sort -r | head -n1) /usr/local/bin/g++
sudo ln -sf $(ls -d /usr/local/bin/* | grep "/gcc-" | sort -r | head -n1) /usr/local/bin/gcc
# for include <bits/stdc++.h>
sudo mkdir -p /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/bits
cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/bits
sudo wget https://gist.githubusercontent.com/reza-ryte-club/97c39f35dab0c45a5d924dd9e50c445f/raw/47ecad34033f986b0972cdbf4636e22f838a1313/stdc++.h stdc++.h
# install cui tool for atcoder
pip install online-judge-tools
# restart shell
exec $SHELL -l
# login
oj login https://atcoder.jp/
@kmyk 作成ツール. ojコマンドを利用して典型作業を自動化する. 以降ojツールと呼ぶ.
日本語詳細ドキュメントは以下. https://github.com/online-judge-tools/oj/blob/master/docs/getting-started.ja.md
後続のシェルスクリプトはこちらをベースに処理している.
VScode起動時にレコメンドされるものをインストール.
(.vscode/extensions.json
に記載しているものが、推奨として掲示されるはず)
本レポジトリをクローンし、src内で作業フォルダを切ってコーディング.
VScodeでプロジェクトを開くと、テンプレ生成や補完等々便利な機能が利用可能.
cpp_template
とVScode上で入力することで、スニペットによるテンプレ作成が可能.
実際の入力時には、最初の2, 3文字を入力をすると候補が表示されるのでその中から選択可能.
(表示されない場合には、Crtl + Space. Macの場合, Spotlightとショートカットが競合しないよう要調整.)
VScodeでコーディングしていると, cppの保存時に自動整形が走る.
自動整形が上手く走らない場合は、画面のリロードやVScode拡張のclang-formatの無効化を試す.
.vscode/tasks.json
にビルド設定を記載.
https://atcoder.jp/contests/language-test-202001 を参考に設定.
VScode上で Ctrl + Shift + B
でビルドエラーが起きていないか確認可能.
MacとUbuntu用のビルド設定が候補として表示されるので、適切なものを選択してビルド実行.
ビルドオプションを固定させたいときは、tasks.json
内で固定したいtasks配列要素に以下を追加.
"group": {
"kind": "build",
"isDefault": true
},
問題のurlがhttps://atcoder.jp/contests/abc{xxx}/tasks/abc{xxx}_{a}
のようなパターンである場合、
シェルスクリプトでサンプルケースによるテストが簡易に実行可能.
( {xxx}
、{a}
はブラウザで解いている問題のurlを目検参照.)
プロジェクトルートでシェルスクリプト実行によりテスト可能.
以下は,
- ソース:
src/abc/139/1.cpp
, - 問題url: [https://atcoder.jp/contests/abc139/tasks/abc139_b]
の場合にテストを実行するときのコマンド.
※ urlのパターンが上記に当てはまらない場合、素のojコマンドで代用.
./tools/atcoder-test.sh src/abc/139/1.cpp abc139 b
問題のurlがhttps://atcoder.jp/contests/abc{xxx}/tasks/abc{xxx}_{a}
のようなパターンである場合、
シェルスクリプトでコード提出が簡易に実行可能.
( {xxx}
、{a}
はブラウザで解いている問題のurlを目検参照.)
プロジェクトルートでシェルスクリプト実行によりテスト可能.
以下は,
- ソース:
src/abc/139/1.cpp
, - 問題url: [https://atcoder.jp/contests/abc139/tasks/abc139_b]
の場合にテストを実行するときのコマンド.
※ urlのパターンが上記に当てはまらない場合、素のojコマンドで代用.
./tools/atcoder-submit.sh src/abc/139/1.cpp abc139 b
# wslで実行する場合、ojの仕様でwebブラウザで提出画面を開く挙動が実現されない.
# 以下のようにコマンドオプション(win)をつけて実行することで、webブラウザで提出画面を開くようにできる.
./tools/atcoder-submit.sh src/abc/139/1.cpp abc139 b win
※wait for update
The scripts and documentation in this project are released under the MIT License