Skip to content

antyuntyuntyun/atcoder-cpp-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

atcoder-cpp-template

License: MIT

競プロ ( 主に 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/

online-judge-tools

@kmyk 作成ツール. ojコマンドを利用して典型作業を自動化する. 以降ojツールと呼ぶ.

日本語詳細ドキュメントは以下. https://github.com/online-judge-tools/oj/blob/master/docs/getting-started.ja.md

後続のシェルスクリプトはこちらをベースに処理している.

VScode Extension

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を目検参照.)
プロジェクトルートでシェルスクリプト実行によりテスト可能.
以下は,

の場合にテストを実行するときのコマンド.
※ 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を目検参照.)
プロジェクトルートでシェルスクリプト実行によりテスト可能.
以下は,

の場合にテストを実行するときのコマンド.
※ 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

Docker

※wait for update

参考

License

The scripts and documentation in this project are released under the MIT License

About

競プロ ( 主に Atcoder ) を C++ で取り組むためのテンプレート及び環境

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published