Perl5で競技プログラミング / Perl5-Competitive-Programming
by
odanado
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Perl5で競技プログラミング 2018-06-11 Gotanda.pm #18 1
Slide 2
Slide 2 text
自己紹介 ● 所属: 株式会社モバイルファクトリー ● GitHub: odanado ● Twitter: @odan3240 ● Perl5歴 ○ 2ヶ月 ● 趣味 ○ 競技プログラミング ○ ポケモン関係のツールを作ること ■ poke2vec ■ rng-api ○ Slack bot作り 2 ↓Twitterアイコン
Slide 3
Slide 3 text
祝 gotanda.pm.org の https化 3
Slide 4
Slide 4 text
祝 gotanda.pm.org の https化 4
Slide 5
Slide 5 text
祝 gotanda.pm.org の https化 5
Slide 6
Slide 6 text
祝 gotanda.pm.org の https化 6
Slide 7
Slide 7 text
祝 gotanda.pm.org の https化 7
Slide 8
Slide 8 text
祝 gotanda.pm.org の https化 8
Slide 9
Slide 9 text
今日話すことのモチベーション 9
Slide 10
Slide 10 text
今日話すことのモチベーション 配列外参照でdieしてほしい! 10
Slide 11
Slide 11 text
競技プログラミングとは 11
Slide 12
Slide 12 text
競技プログラミングとは ● 与えられた仕様を満たすような プログラムをコーディングする競技 12
Slide 13
Slide 13 text
競技プログラミングとは ● 与えられた仕様を満たすような プログラムをコーディングする競技 問題文 13
Slide 14
Slide 14 text
競技プログラミングとは ● 与えられた仕様を満たすような プログラムをコーディングする競技 ソースコード 14
Slide 15
Slide 15 text
競技プログラミングとは ● 与えられた仕様を満たすような プログラムをコーディングする競技 正当性の検証 15
Slide 16
Slide 16 text
会社の競技プログラミング部の 活動でのある日 16
Slide 17
Slide 17 text
競技プログラミング部でのある日 ● Perlプログラムを実行すると謎のエラーが出る ● この時Perl歴1ヶ月弱ぐらい ○ デバッグした結果、原因は配列外参照 ● つらい... 17 > Use of uninitialized value in addition hogehoge <
Slide 18
Slide 18 text
Perl5での 競技プログラミングのつらさ 18
Slide 19
Slide 19 text
Perl5での競技プログラミングのつらさ ● 配列外参照でdieしない ○ “Use of uninitialized value in addition hogehoge” ● 標準ライブラリに便利なデータ構造が揃ってない ○ C++におけるSTLのvector,set,map,deque など 19
Slide 20
Slide 20 text
Perl5での競技プログラミングのつらさ ● cpanはすごい ○ ライブラリが豊富 ○ 便利そうなライブラリをcpanで探す? ■ ダメ。 ● AtCoderの提出事情 (ほとんどの競プロサイトはそう) ○ AtCoderへの提出はソースコードのコピペ ○ 実行はAtCoderのサーバ上 ■ Perl 5.18.2 が動いているだけ ○ 標準ライブラリ以外を使うなら全てをコピペ 20
Slide 21
Slide 21 text
Perl5での競技プログラミングのつらさ ● cpanはすごい ○ ライブラリが豊富 ○ 便利そうなライブラリをcpanで探す? ■ ダメ。 ● AtCoderの提出事情 (ほとんどの競プロサイトはそう) ○ AtCoderへの提出はソースコードのコピペ ○ 実行はAtCoderのサーバ上 ■ Perl 5.18.2 が動いているだけ ○ 標準ライブラリ以外を使うなら全てをコピペ 21
Slide 22
Slide 22 text
いい感じの競技プログラミング 向けのライブラリがほしい 22
Slide 23
Slide 23 text
自作した 23
Slide 24
Slide 24 text
自作した ● GitHub: odanado/p5-Procon ● C++のSTLにあるやつはI/Fを真似る ● 実装済み ○ Vector ○ UnorderedSet ○ UnorderedMap ○ UnionFind ● 未実装 ○ Deque ○ Stack ○ Queue ○ PriorityQueue ○ etc... 24
Slide 25
Slide 25 text
自作した ● t/01_vector.t 25
Slide 26
Slide 26 text
まとめ 26
Slide 27
Slide 27 text
まとめ ● 競技プログラミングはソースコードをコピペで提出 ○ 基本的に標準ライブラリ以外のライブラリは使用不可 ○ ライブラリもまとめてコピペ ● Perl5で競技プログラミングするのに 便利なライブラリを開発した ○ I/FはC++のSTLを真似た ● データ構造/アルゴリズムをゴリゴリ実装していく予定 ● Webサイトも作りたい 27