tomohxxの日記

麻雀プログラミング

AtCoder用環境構築

はじめに

AtCoder Libraryがコンテストで使えるようになったとのことで、先日AtCoder用の環境を構築しました。そこでやったことをメモとして残しておきます。

開発環境

OSはWindowsです。開発環境としてUbuntu-20.04 (WSL2) + VSCodeを使用します。以下、Ubuntu-20.04とVSCodeに必要な設定を行います。ちなみにWSL2ではなくWSL1でもよいです。

Ubuntu-20.04での設定

ビルドツールのインストール
$ sudo apt install build-essential -y
$ sudo apt install gdb -y
$ sudo apt install boost-all-dev -y

boostはオプションです。

AtCoder Libraryのインストール

適当な作業ディレクトリを作ってそこにAtCoder Libraryをダウンロードします。これを展開した後atcoderディレクトリを/usr/local/include/にコピーします。

$ mkdir work
$ cd work
$ wget https://github.com/atcoder/ac-library/releases/download/v1.2/ac-library.zip
$ unzip ac-library.zip -d ac-library
$ sudo cp -r ac-library/atcoder /usr/local/include
エイリアスの設定

AtCoderでのコンパイルオプションを参考にエイリアスを設定します。(参考: https://atcoder.jp/contests/abc180/rules)

$ echo "alias acc='g++ -std=c++17 -Wall -Wextra -O2'" > ~/.bash_aliases

例えばa.cppというファイルがあったとして以下のようにビルドできます。

$ acc a.cpp

VSCodeでの設定

Remote - WSLのインストール

拡張機能からRemote - WSLをインストールしておきます。

スニペットの設定

コンテスト用のコードを収めるディレクトリとして以下のような構造を想定します。atcoder/以下にコンテスト名のディレクトリをどんどん追加していくイメージです。

atcoder/
 ├ .vscode/
 ├ ABC180/
 ├ ARC106/
 └ ARC107/

[ファイル]タブから[ユーザー設定] > [ユーザースニペット]を選択して新しいスニペットを作成します。以下のJSONを貼り付けます。

{
  "atcoder": {
    "scope": "cpp",
    "prefix": "atcoder",
    "body": [
      "#include <bits/stdc++.h>",
      "#include <atcoder/all>",
      "using namespace std;",
      "using namespace atcoder;",
      "using ll = long long;",
      "",
      "int main()",
      "{",
      "  $1",
      "",
      "  return 0;",
      "}"
    ]
  }
}

このスニペットを使うにはRemote - WSLでatcoder/を開いた後、コード編集中にatcoderと入力します(atcまで打ってタブキー押下でも可)。

おわりに

自分で思いついたのはこんなものです。調べてみたらVSCodeIDEのように使うこともできるみたいですね。後でこちらも試してみたいと思います。
qiita.com