Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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