Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp

105,339 views

Published on

アルゴリズム・ゲームAI・インフラ・データマイニング・セキュリティのコンテストと、そのはじめかたを紹介していきます。

Published in: Engineering
  • Be the first to comment

強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp

  1. 1. つよくなるための プログラミング @cocodrips 1
  2. 2. おまえだれ? 2 名前 : くーむ ( o・ω・)ノ Twitter : @cocodrips 職業 : ゲームプログラマ(Lv.1) すきなもの : Python / C++ / js ブログ : ぴよぴよ.py
  3. 3. プログラミングコンテストとは? 3 参加者がそれぞれ問題を解いて、 解くスピード、正確さ、スコアを競いあって 青春するイベント
  4. 4. 様々なジャンルのコンテスト 4 長い(数週間) だれでもできる 2時間 アルゴリズム セキュリ ティ 専門知識が必要 開催期間 サーバ インフラ ゲームAI データマイニング 1 2 345
  5. 5. 紹介するコンテストについて 5 参加資格の制限がないコンテスト アイディアを競うようなコンテスト Pythonで参加できるコンテスト
  6. 6. コンテストに参加する利点 6
  7. 7. コンテストに参加する利点 7 1 自分と同じ問題を解いた、 他の人の解法を知ることができる
  8. 8. コンテストに参加する利点 8 1 自分と同じ問題を解いた、 他の人の解法を知ることができる 2 同じコンテストに出ていた、 たくさんのライバルと知り合える
  9. 9. アルゴリズムの コンテスト紹介 9
  10. 10. アルゴリズムのコンテスト 10 長い(数週間)2時間 アルゴリズム セキュリ ティ 開催期間 サーバ インフラ ゲームAI データマイニング だれでもできる 専門知識が必要
  11. 11. アルゴリズムのコンテスト- 問題例 11 有る長方形の3つの辺の長さが与えられる。 残り1つの辺の長さを求めよ。 (Atcoder Beginner Contest 027A) ?
  12. 12. アルゴリズムのコンテスト- 問題例 12
  13. 13. アルゴリズムのコンテスト- 問題例 13 N段の階段があります。あなたは一歩で1段、2段、 もしくは3段登ることができます。 考えうる階段の登り方は何通りありますか?
 答えを1000000007で割った数を出力しなさい。 0<N<105 時間制限:2秒, スタック・メモリ制限:256MB
  14. 14. アルゴリズムのコンテスト- 問題例 14 N段の降り方 = 1段降りて、残り(N - 1)段の降り方 + 2段降りて、残り(N - 2)段の降り方 + 3段降りて、残り(N - 3)段の降り方
  15. 15. アルゴリズムのコンテスト- 問題例 15
  16. 16. アルゴリズムのコンテスト- 問題例 16 1 計算時間を見積もってみよう! 2 デフォルトでのPythonの 再帰回数の限界を調べてみよう! maximum recursion depth
  17. 17. アルゴリズムのコンテストとは 17 与えられた問題に対して 解くはやさと正確さを競う 1 外部ライブラリ使用不可 2 速く解くほど点数が高い 3 順位に応じて自分のレーティングが変化する
  18. 18. アルゴリズムのコンテストのよさ 18 1 基本的なデータ構造の使い方を学べる 2 一瞬で計算量を見積もれるようになる 3 標準ライブラリや、言語仕様に詳しくなる 4 1 2時間程度の短時間なコンテスト
  19. 19. 19 TopCoder SRM (するめ) おてがる かんたん Python適性 Div1 定期 開催型 競技プログラミングといえばTopCoder SRM! SRMのレーティングで競技プログラマとしての格が決まる?! 目指せ Red Coder! ! アルゴリズムというよりも、数学よりの問題が多いのが特徴 Div 1 / Div 2 : 3問 / 75分 + 撃墜フェーズ 15分 開催頻度 : 月に4回程度 次回開催 : 10/11(日) 1:00 , 10/15(木) 0:00 Div2 RedCoder https://www.topcoder.com/ アルゴリズムのコンテスト - 紹介
  20. 20. 20 CodeForces おてがる かんたん Python適性 Div1 Div2 今夜は家で6000人のプログラマと戦おう! 今1番勢いのある競技プログラミングコンテスト!!! ! Div 1 / Div 2 : 5問 / 2時間 開催頻度 : 月に4回程度 次回開催 : 10/12(月) 18:00 20:00 毎回夜中の2時頃スタートなのを除けば最高… 定期 開催型 http://codeforces.com/ アルゴリズムのコンテスト - 紹介
  21. 21. アルゴリズムのコンテスト - 紹介 21 AtCoder おてがる かんたん Python適性 アルゴリズムのコンテストならまずはここから! 毎週土曜日に開催される日本語のコンテスト 毎回終了後には解説がニコニコ生放送で見れるのも魅力! ! 初心者向け(ABC) : 4問 / 2時間 中級者向け(ARC) : 4問 / 1.5時間 開催頻度 : 毎週土曜日にABC/ARCどちらか 次回開催 : ARC 10/10(土) 21:00 22:30 ABC 10/24(土) 21:00 23:00 (予定) 定期 開催型 http://atcoder.jp/ @chokudai 社長
  22. 22. 22 TopCoder Codeforces AtCoder(日本語) 開催頻度 月3回 月4回 毎週土曜日 問題の特徴 数学系 どちらかといえば アルゴリズム アルゴリズム重視 問題数と時間 3 5問/120分 4問/90分 PythonのVersion 2 2, 3 2, 3 解ける人数 (%) Topcoder
 の何色に相当するか Div2 Div1 Div2 Div1 ABC ARC 100% 1 1 2 2 4 2 1 3 2 0% 1 2 3 1 2 3 1 2 4 5 2 3 5 4 3 1 4 2 1 3 1 2 3 4 易 難 アルゴリズムのコンテスト - 比較 初心者におすすめ 神の領域
  23. 23. 23 アルゴリズムのコンテスト - 勉強法 1 AtCoderのABCに出てみる 2 ABCの過去問を数回分解く 4 アルゴリズムコンテスト用の本を読む 3 TopCoder / CodeForces に出る
  24. 24. 24 アルゴリズムのコンテスト - 技術書 競技プログラミングを 最近はじめた人におすすめ もっともっと強く なりたい人におすすめ
  25. 25. どこでコンテスト探すの? 25 TopCoder部のカレンダー 紹介したコンテストがいつ開催されるかわかる Googleカレンダーと連携するのがおすすめ!
  26. 26. ゲームAIの コンテスト紹介 26
  27. 27. ゲームAIのコンテスト 27 とにかく強いゲームAIを作る
  28. 28. アルゴリズムのコンテスト 28 長い(数週間)2時間 アルゴリズム セキュリ ティ 開催期間 サーバ インフラ ゲームAI データマイニング だれでもできる 専門知識が必要
  29. 29. ゲームAIのコンテスト 29
  30. 30. ゲームAI 30 Codingame おてがる かんたん Python適性 気軽にできる対戦型ゲームAIコンテスト コンテスト以外にも様々な練習用ゲームがある ! 開催期間 : 1日∼1週間程度 開催頻度 : 月に1回程度 次回コンテスト : CODE vs ZOMBIE 11/29(日) 2:00 11/30(月) 2:00 (24h) 定期 開催型
  31. 31. ゲームAI 31 CODE VS おてがる かんたん Python適性 プログラマが1番目立てるコンテスト 本選がニコファーレで開催! ニコニコ生放送デビュー!? ! 開催期間 : 1ヶ月程度 開催頻度 : 年に1回程度 次回コンテスト : 未定 イベント 型
  32. 32. ゲームAI - CodeVSの様子 32 https://youtu.be/D3r-98abnjY?t=58s
  33. 33. ゲームAIコンテスト - 勉強法 33 1 アルゴリズムコンテストで アルゴリズムの基礎を学ぶ 2 3 自己流アルゴリズムで Codingameに出てみる ゲームAIやMMでよく使う アルゴリズムを学ぶ
  34. 34. ゲームAIコンテスト - 勉強法 34 1 アルゴリズムコンテストで アルゴリズムの基礎を学ぶ 2 3 自己流アルゴリズムで Codingameに出てみる ゲームAIやMMでよく使う アルゴリズムを学ぶ 1 codingameに出る 2 codingameに出る 3 codingameに出る
  35. 35. データマイニングの コンテスト 35
  36. 36. データマイニングのコンテスト 36 長い(数週間)2時間 アルゴリズム セキュリ ティ 開催期間 サーバ インフラ ゲームAI データマイニング だれでもできる 専門知識が必要
  37. 37. データマイニングのコンテスト 37 Kaggle おてがる かんたん Python適性https://www.kaggle.com/ 定期 開催型 データマイニングでひとやま当てよう?! 常時10個程度のコンテストが開催されている 自分にあった分野のコンテストを探そう! ! 開催期間 : 数ヶ月程度 開催頻度 : 常時開催
  38. 38. データマイニングのコンテスト - 勉強法 38
  39. 39. データマイニングのコンテスト - 勉強 39
  40. 40. データマイニングのコンテスト - 勉 40
  41. 41. データマイニングのコンテスト ……… 41
  42. 42. データマイニングのコンテスト orz 42 データマイニング初心者なので、 よい勉強法がわかりません・・・・ (多分ここにはプロがいっぱいいるので 闊なこと言えない・・・)
  43. 43. Kaggleのはじめかた 43 初心者目線での
  44. 44. Kaggleのはじめかた 44 初心者目線での GettingStarted の練習問題に挑戦してみる
  45. 45. サーバ・インフラの コンテスト 45
  46. 46. サーバ/インフラのコンテスト 46 長い(数週間)2時間 アルゴリズム セキュリ ティ 開催期間 サーバ インフラ ゲームAI データマイニング だれでもできる 専門知識が必要
  47. 47. サーバ/インフラ 47 ISUCON おてがる かんたん Python適性 いい感じにスピードアップコンテスト(ISUCON) 日々の業務で培ったWeb総合力が試される!!!! 3人1組なので、チームを作るのが1番難しい… ! 開催期間 : 7時間程度 開催頻度 : 年に1回 予選 / 本選(オンサイト) 次回コンテスト : 未定(今年は予選が終了済み、10/31に本選) イベント 型 http://isucon.net/
  48. 48. 48 サーバ/インフラのコンテスト - 勉強法 1 ISUCONの過去問を解く 2 ISUCONの参加記や 解説を読む
 (公式サイトにリスト有り)
  49. 49. セキュリティの コンテスト 49
  50. 50. セキュリティのコンテスト 50 長い(数週間)2時間 アルゴリズム セキュリ ティ 開催期間 サーバ インフラ ゲームAI データマイニング だれでもできる 専門知識が必要
  51. 51. セキュリティコンテスト-CTFとは? 51 Capture The Flag (旗取り合戦) ! 攻防戦方式 : 脆弱性のあるサービスが動いているサーバが与えられ、 敵チームのサーバからFlagを盗み取る ! クイズ方式 : Webサイトの脆弱性をつく / 暗号を解く / バイナリ解析 etc. !
  52. 52. 問題: vzcbeg guvf 52 Gur Mra bs Clguba, ol Gvz Crgref
 
 Ornhgvshy vf orggre guna htyl.
 Rkcyvpvg vf orggre guna vzcyvpvg.
 Fvzcyr vf orggre guna pbzcyrk.
 Pbzcyrk vf orggre guna pbzcyvpngrq.
 Syng vf orggre guna arfgrq.
 Fcnefr vf orggre guna qrafr.
 Ernqnovyvgl pbhagf.
 Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
 Nygubhtu cenpgvpnyvgl orngf chevgl.
 Reebef fubhyq arire cnff fvyragyl.
 Hayrff rkcyvpvgyl fvyraprq.
 Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
 Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
 Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
 Abj vf orggre guna arire.
 Nygubhtu arire vf bsgra orggre guna *evtug* abj.
 Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
 Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
 Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!
  53. 53. 問題: vzcbeg guvf 53 Gur Mra bs Clguba, ol Gvz Crgref
 
 Ornhgvshy vf orggre guna htyl.
 Rkcyvpvg vf orggre guna vzcyvpvg.
 Fvzcyr vf orggre guna pbzcyrk.
 Pbzcyrk vf orggre guna pbzcyvpngrq.
 Syng vf orggre guna arfgrq.
 Fcnefr vf orggre guna qrafr.
 Ernqnovyvgl pbhagf.
 Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
 Nygubhtu cenpgvpnyvgl orngf chevgl.
 Reebef fubhyq arire cnff fvyragyl.
 Hayrff rkcyvpvgyl fvyraprq.
 Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
 Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
 Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
 Abj vf orggre guna arire.
 Nygubhtu arire vf bsgra orggre guna *evtug* abj.
 Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
 Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
 Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr! string.decode(‘rot13’)
  54. 54. 問題: import this 54 The Zen of Python, by Tim Peters ! Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  55. 55. セキュリティコンテスト - 紹介 55 SECCON おてがる かんたん Python適性 日本でCTFといえばSECCON 本選: 攻防戦方式 予選:クイズ形式 ! 開催期間 : 12 48時間程度 開催頻度 : 本選1回 + 予選7回 /年 次回コンテスト : オンライン予選 12/5(土) 12/6(日) http://2015.seccon.jp/ 定期 開催型
  56. 56. セキュリティコンテスト - 勉強法 56 1 ksnctf でCTFの問題に挑戦してみる 2 出たりCTF本を読んだりする それ以上のことはわからないorz 3 とかをチェックする
  57. 57. セキュリティコンテスト - 技術書 57 先週発売された 期待の新星 (売切中) 予約してたのにまだ届かない
  58. 58. まとめ 58
  59. 59. 様々なジャンルのコンテスト 59 長い(数週間) だれでもできる 2時間 アルゴリズム セキュリ ティ 専門知識が必要 開催期間 サーバ インフラ ゲームAI データマイニング
  60. 60. 伝えたいこと 60 1 プログラミングコンテストは 子どもも大人も楽しめる青春イベント! 2 自分の解法と他の人の解法を比較して、 より良い解き方や書き方を知ろう 3 様々なジャンルのコンテストがある! とにかく一度参加してみよう!
  61. 61. コンテスト予定! 61 10/11(日) 1:00 , 10/15(木) 0:00TopCoder SRM CodeForces AtCoder アルゴリズム ゲームAI Codingame セキュリティ SECCON 10/12(月) 18:00 20:00 ARC 10/10(土) 21:00 22:30 ABC 10/24(土) 21:00 23:00 (予定) 11/29(日) 2:00 11/30(月) 2:00 (24h) オンライン予選 12/5(土) 12/6(日) 初心者におすすめ
  62. 62. 参考 - アルゴリズム 62 ✦ yukicoder 競技プログラミング・アルゴリズムをに練習サイト
 http://yukicoder.me/ ✦ TopCoder部のカレンダー
 https://topcoder.g.hatena.ne.jp/calendar
  63. 63. 参考 - セキュリティ 63 ✦ CTFはとんでもないものを 盗んでいきました。私の時間です… http://www.slideshare.net/hiromu1996/it-31937461 ✦ ksnctf
 http://ksnctf.sweetduet.info/

×