Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
競プロ環境構築概論
Search
rokkoribou
July 25, 2024
0
13
競プロ環境構築概論
rokkoribou
July 25, 2024
Tweet
Share
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
Producing Creativity
orderedlist
PRO
348
40k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Optimizing for Happiness
mojombo
379
70k
Building Adaptive Systems
keathley
44
2.8k
Done Done
chrislema
186
16k
Practical Orchestrator
shlominoach
190
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Visualization
eitanlees
150
16k
Transcript
競プロ環境概論 自動化で快適な環境へ
お前は 誰だ? 旅行ヘタクソオタク 競プロは弱い 好きなこと • おでかけ • 温泉 •
聖地巡礼 • 18切符 • サブカル • アニメ • 今期は小市民 • きらら • 評論 やってみたいこと • おうちサーバー • ネタツールを作る • Rustで何かを作る • 電子工作 • コミケに本を出す • 離島めぐり • JR乗船率向上 • 寝台列車に乗車
競技プログラミングってなに?
数学的問題をプログラミングで解くやつ • 数学のテストの情報科学バージョンと思ってもらえば • 手作業だと作業量が多すぎて解けないのでコンピュータにやら せます 問題は地点からある地点の最短距離を求めるとか、めっちゃ速く 計算するにはどうするとか codeforces 主なサイト
https://atcoder.jp/?lang=ja https://codeforces.com/ https://leetcode.com/
基本的な問題を解く流れ (3)提出する + 正解したかチェック テスト失敗 提出したときに不 正解だとわかる (1)コードを書く (2)テストをする エディタ
ブラウザ ブラウザ
手動でテストしたとき テストのときはブラウザ上でテストの数くらいタブを切り替えて コピペを行ってコードを実行する 単純で冗長な作業をする必要がある エディター 問題とテストサンプルのページ 入力と出力セット コードテストページ めっちゃ移動が生えます… サンプルテストの
入力と期待される出力コピペ テスト用コード貼り付け 提出用コード貼り付け
時間がかかるとパフォーマンスが下がる • 競技プログラミングは早く問題が解けるほど高いパフォーマン スになる • 遅いと逆にパフォーマンスが低くなる • 同じ点数でも早解きが二色分も下がることも* *https://qiita.com/e869120/items/eb50fdaece12be418faa#2-2-5- %E6%97%A9%E8%A7%A3%E3%81%8D%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%82%B3
%E3%83%B3%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%81%99%E3%81%99%E3%82%81
そ う だ 環 境 構 築 し よ う
構成の流れ(あくまでも一例です) Dockerなどで作成(別のものでも可) 適宜ツールをインストールするスクリプト追加 エディター スクリプト 競プロツール ファイルの パスを渡す パスからツールに渡す 変数を作成する
テスト、提出 tasks.json 仮想環境
なぜ仮想環境 • いったん作成すればいつ作っても環境構築で詰まらない • おま環がない • PCを買い替えても安心 • 環境が汚れない •
共有ができる • 個人的にはコンテナがオススメ
エディタの役割 • コードを編集(それはそう) • 拡張機能などを使って自動化やツールとの連携 • ビルドから提出までを指示 • 現在開いているファイルのパスを取得 •
tasks.jsonなどで${folder}とか${file}とかで取得できます
スクリプトの役割 前処理をしてツールを動作させる シェルスクリプトで直接実行させるかpythonのsubprocessとか でツールを実行 スクリプト 競プロツール abc250 a を引数で渡すから 提出してくれや
かしこま! 提出するやで エディター ファイル名は abc250/bin/a.cpp です
ツールの役割 • テストの自動化 • サンプル取得からテストまでを実行 • 小数点が入った時など詳細に設定して行う • テスト生成も •
提出の自動化 • ほかのものと組み合わせてボタンを押すだけでテストが可能に 有名なのは Online-judge-tool
その他便利ツール • コーディング • 自作ライブラリ • 補完 • スニペット •
デバッガー • リンター • フォーマッター • 管理 • CI • バージョン管理 • 自動でフォルダを作ってくれるやつ • グラフを可視化 (ウェブアプリ)
まとめ • 仮想化環境を作成しよう • エディタからスクリプトにファイルのパスを渡して前処理をし てツールで目的の動作を実行しよう • 仮想環境内にツールを入れよう
おまけだよ
None
None
None
好きなプロ環(競技プログラミング環境)発表ドラゴンが
好きなプロ環を発表します
ローカル 環境立ち上げが早いから心理 的ハードルがない ただし環境が汚れたり更新と かで壊れることも
WSL Windows使いならこれもよいかも 僕はこの環境を愛用していましたが バージョンアップデートで壊れました
コンテナ どのPCで作っても大体同じ 環境を統一できる ただし立ち上げに時間がかかる 今回紹介したのはこれ
ブラウザ上で 使えるやつ 競プロサイトのLeetcodeで 課金すると便利に使用可 便利なのは他で調べられなかった ので誰か作ってください(切実) Cloud9とかGithub code space やGitpodがいいかも
正式名称がわからないプロ環も好き好き大好き