競技プログラミング用にパソコンを買ったので、環境構築を全部書きます。
目標はWSL+VSCodeでC++を実行できるようにして、atcoder-cliで提出出来るようにすることです。
Lenovo IdeaPad Slim 170 14型 (AMD) 49,830円
プロセッサー: AMD Ryzen™ 5 7520U (2.80 GHz 最大 4.30 GHz)
初期導入OS: Windows 11 Home 64bit
グラフィックカード: AMD Radeon™ 610M グラフィックス
メモリー: 8 GB LPDDR5-5500MHz (オンボード)
ストレージ1: 512 GB SSD, M.2 PCIe-NVMe Gen4 QLC
ディスプレイ: 14” FHD液晶 (1920 x 1080)
重さ: 1.4kg
パソコンに詳しくないので、5万円以下でなるべく性能がいいらしいものを買いました。(参考)
普段使いは生協で買ったLIFEBOOKなので、重さに驚きました。
地域を設定したりします。
デバイスの名前はLAPTOP-KP-shogoにしました(後から変更できます)。
Microsoftアカウントは既に持っていますが、新規にメールアドレスを取得してみます。名前を姓名別に入力させるフォーム…。
サインインしてPINを設定出来たらあとは全部スキップして完了。
PowerShellを管理者として実行
指示通り再起動する
これで再起動できる(手動でいい)。
再起動すると、Ubuntuのターミナルが開かれた状態でusernameを入力するよう指示があるので入力する。次にパスワードを入力するよう指示があるので入力する(入力時、画面に文字が出ない)。もう一回パスワードを入力すると設定完了。
パスワードは簡単にしておいた方がいい。
Microsoft Storeにもありますが、公式ページからインストーラーをダウンロードしている人が多いのでそっちにします。
https://code.visualstudio.com/download
にアクセスして、WindowsのUser Installerのx64をクリック。
VSCodeUserSetup-x64-1.81.1.exeがダウンロードされるので実行。
使用許諾契約書が出るので同意
インストール先を指定できますが、デフォルトの
C:\Users\username\AppData\Local\Programs\Microsoft VS Codeにしておきます。
追加タスクを選択できます。せっかくなので全部チェックしておきます。
インストールを押して完了です。
拡張機能の
をインストール
左下の><みたいなのを押して、Connect to WSLを選択
左下が><WSL-Ubuntuになる
これでVSCodeからWSLのファイルを触れるようになる
ターミナルを開いて
shogo314@LAPTOP-KP-shogo:~$
のように表示されている
ターミナルで
sudo apt install build-essential -y
を実行
で正しく表示されたらOK
を入れる
shogo314@LAPTOP-KP-shogo:~$ mkdir AtCoder/ABC/abc211/a -p
shogo314@LAPTOP-KP-shogo:~$ cd AtCoder/ABC/abc211/a
shogo314@LAPTOP-KP-shogo:~/AtCoder/ABC/abc211/a$
VSCodeで/AtCoder/ABC/abc211/を開いてa/にmain.cppを作る
std:: cout << ( float )( A - B ) / 3 + B << std:: endl ;
拡張機能が働いていることがわかる。
ファイルを保存して下を実行
g++がちゃんと使えている
既にインストールされてる?
Pythonをインストールするとpipもついてくるはずだけど、なかったのでインストール。
sudo apt install python3-pip -y
curlは既にインストールされている
node.jsはバージョンが結構複雑らしい
https://github.com/nvm-sh/nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
ターミナルを開き直す
pip3 install online-judge-tools
pip listだと表示されるがojが認識されない。
ターミナルを開き直せば使えた。
npm install -g atcoder-cli
oj login https://atcoder.jp
ログイン
abc210/aの中にmain.cppを作る
std:: cin >> N >> A >> X >> Y ;
std:: cout << std:: min ( N , A ) * X + std:: max ( 0 , N - A ) * Y << std:: endl ;
が実行できない
テストケースのディレクトリがtestsに作られたのにtestを参照している。とりあえずディレクトリ名を変更して実行。
正常に動くことが確認できる。
提出成功。テストケースのディレクトリ名を変えたせいでテストしてないけど大丈夫?みたいなのが出た。
$ acc config default-test-dirname-format test
$ acc config default-task-choice all
テストケースのディレクトリ名を変更する。
コンテストを選んだときすべての問題のディレクトリが作成されるようにする。
で設定用のディレクトリがわかるので、それを開く。
~/.config/atcoder-cli-nodejs
ここにcppディレクトリを作りtemplate.jsonを置く
main.cppも作る。
テンプレートを適当に作る。
acc config default-template cpp
これで設定したテンプレートが使用できる。
仮にac-libraryを使ってみる
$ git clone https://github.com/atcoder/ac-library.git
abc206を開く
d/main.cppを
for ( int i = 0 ; i < N / 2 ; i ++ )
if ( ! uf . same ( A [ i ], A [ N - i - 1 ]))
uf . merge ( A [ i ], A [ N - i - 1 ]);
にする
$ g++ main.cpp -I ~/library/ac-library
ac-libraryをコンパイル出来ている。
これだとAtCoderにしか提出出来ないので、インクルードしているものを自動で展開できるようにする。
$ pip3 install online-judge-verify-helper
これでインストールできる。念のためターミナルを開き直して
$ oj-bundle main.cpp -I ~/library/ac-library > a.cpp
展開したものが標準出力に出るので> a.cppを付けて出力先をファイルにする。
展開したいものは<atcoder/dsu>のように<>で囲んでいると駄目で、""で囲む必要がある。
これまでだとVSCodeの拡張機能が”atcoder/dsu”を認識できておらずエラーが出ていた。
ホームディレクトリに.bash_profileを作り
export CPLUS_INCLUDE_PATH=~/library/ac-library
と書く。2つ以上設定したい場合は:で区切るらしい。‘/home’から書いた方が確実かも。
ここのファイルはbashを起動したときに実行されるのでターミナルを開き直す。
で表示されてたら成功。
これでエラーが出なくなった。またg++を実行するときに-I ~/library/ac-libraryを書かずとも動くようになった。
しかし、oj-bundleは書く必要がある。
より
が好きなのでフォーマッタの設定を変える。
設定を開く。Ctrl+,で開ける。
C_Cpp: Clang_format_fallback StyleがデフォルトだとVisual StudioになっているのでGoogleに変える。
VSCodeを開き直すと急にojやoj-bundleが使えなくなった。acc check-ojは使えるし、動いているのでPATHの問題っぽい。
home/shogo314/.local/bin/oj --versionが動くのでこれを呼べるようにすればよい。
~/.bash_profileに
export PATH="~/.local/bin:$PATH"
を追加する。
結構大変だった。
ライブラリを作る(執筆中)に続く…