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
How to automate competition programming
Search
Dassimen
November 24, 2019
Programming
1
270
How to automate competition programming
こちらのLT資料です。
https://gigacode.connpass.com/event/153119/
Dassimen
November 24, 2019
Tweet
Share
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
24
Trying AWS Aurora Serverless.
anchorcable
0
210
Dialogue for Design
anchorcable
1
300
How to manage a good work environment
anchorcable
0
110
TDD is not slowly.
anchorcable
1
550
3日坊主でも勉強したい
anchorcable
5
5.6k
Design It! is good for architect.
anchorcable
0
130
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
700
TDD supports us all the time.
anchorcable
0
340
Other Decks in Programming
See All in Programming
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
エラーって何種類あるの?
kajitack
5
300
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
350
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
170
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.3k
GraphRAGの仕組みまるわかり
tosuri13
7
480
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
260
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
19
3.5k
GoのGenericsによるslice操作との付き合い方
syumai
3
680
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
570
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
250
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
14k
Building Applications with DynamoDB
mza
95
6.5k
Statistics for Hackers
jakevdp
799
220k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
Six Lessons from altMBA
skipperchong
28
3.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Building an army of robots
kneath
306
45k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Transcript
Performanceを上げたいので 自動化してみました Nov 24, 2019 | #dasshimen #GigaCode2019 提出、テスト、そんなものは自動化だ! 脱脂綿
( @anchor_cable )
#GigaCode2019 2 About Me 脱脂綿 ( @anchor_cable ) 東京都内に住む脱脂綿(=Twitter名)系エンジニア •
株式会社ゆめみ ◦ サーバーサイドエンジニア ◦ 7月1日入社 • AtCoder登録は1年前
3 アジェンダ テストと提出を自動化する方法 自動化した結果どうなるのか Performanceを上げるには? 1 2 3 #GigaCode2019
Performanceを上げるには? 1
5 Performanceを上げるには? なるべく多くの問題を早く解かねばならない(今更感) AtCoder Beginner Contestの場合、 A問題とB問題を合わせて5分以内に解くのが目安 A B C
D E F #GigaCode2019
6 そうはいっても大変 そもそもやることが多い 1.問題文を読んで理解する 2.ローカルにファイルを用意する 3.コードを書く 4.実行する 5.サンプル入力を入力する 6.実行結果がサンプル結果と一致するか確かめる 7.ブラウザから提出する
#GigaCode2019
7 簡略化できる 自動化を導入すれば 1.問題文を読んで理解する 2.ローカルにファイルを用意する → 自動で作業ファイルを作成 3.コードを書く 4.実行する 5.サンプル入力を入力する
→ 自動テスト 6.実行結果がサンプル結果と一致するか確かめる 7.ブラウザから提出する → CLIからコマンドで提出できる #GigaCode2019
テストと提出を自動化する方法 2
9 自動化する方法 ツールを3つ入れてみた • online-judge-tools • atcoder-cli • Dash #GigaCode2019
10 online-judge-tools サンプル自動取得+自動テスト+自動提出 ほとんどの競プロerが使った事あるであろうツール。人権。 AtCoderの各問題に記載されている入力例、出力例を取得し、 コマンド1回で自動テストしてくれる。 もう手動で実行して、手動で入力を入れる必要はなくなった! #GigaCode2019
11 atcoder-cli online-judge-toolsのラッパーツール(AtCoder特化) online-judge-toolsは他の競プロコンテストにも対応している都合上、コマンドが長い atcoder-cliを使う事で、コマンドがかなり短縮される テンプレートファイルを自動配置する機能もある 短いコマンドで全て自動化! 問題に取り掛かる時 acc new ABC144
問題をテストする時 oj test -c "python3 main.py" 問題を提出する時 acc s #GigaCode2019
12 Dash スニペットツール(入力支援ツール) oj test -c "python3 main.py" コマンドがまだ長いので、 ;oj#
で出るようにした ついでに競プロのよく使う構文も登録してみた よく使う構文を登録していく事で、 そこで考えるコストがゼロになった #GigaCode2019
自動化した結果どうなるのか 3
14 出た成果 ABC145 Performance:822 ABC144 Performance:601 #GigaCode2019 ABC142時点でPerformance:157
15 単純な時短以外にも恩恵 気持ちの余裕が生まれる (テストで)1発で正解しないコードでも落ち着いて見返せるようになった 若干不安な部分でも、とりあえず実装してみてテスト通す 問題を解く事に全てのリソースを集中できる #GigaCode2019
16 初心者こそ無駄な所を自動化しよう #GigaCode2019 導入前 「自分にはツールはまだ早いでしょ」 「環境整備しても実力が...」 「アルゴリズムの勉強のが先かな」
17 初心者こそ無駄な所を自動化しよう #GigaCode2019 導入前 「自分にはツールはまだ早いでしょ」 「環境整備しても実力が...」 「アルゴリズムの勉強のが先かな」 導入後 「もっと早くやってればよかった」 「過去問解くのも楽しい!」
→要は良いIDEや良いPC揃えるのと同じ
18 まとめ リラックスして本当の実力を引き出そう 初心者こそ自動化の恩恵を受けよう ツールを入れて手動作業を自動化しよう 1 2 3 #GigaCode2019
ご清聴ありがとうございました
20 参考リンク Atcoder環境をatcoder-cli + online-judge-tools + Dashで構築する https://qiita.com/anchor-cable/items/98a0bf669513d47972d4 AtCoder に登録したら次にやること
~ これだけ解けば十分闘える!過去問精選 10 問 ~ https://qiita.com/drken/items/fd4e5e3630d0f5859067 #GigaCode2019