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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
rokkoribou
July 25, 2024
0
15
競プロ環境構築概論
rokkoribou
July 25, 2024
Tweet
Share
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
400
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
190
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がいいかも
正式名称がわからないプロ環も好き好き大好き