皆さんこんにちは〜54代のかっつ(@_KKT89)です。
7日目のテーマは競プロの紹介です!(悲しい事に)自宅で過ごす時間が増えた春学期の過ごし方の一つとして参考になって頂ければ幸いです!
対象読者
プログラミングを始めてみたいけど、初心者で何から手を付けていいか分からない方
競プロって何?美味しいの??って方
数学やパズルが好きな方(多分競プロ好きなタイプです)
はじめに
競プロって何だよって話ですね 競技プログラミングの略称で発音は「きょーぷろ」
競技プログラミングについて僕自身は「めちゃくちゃ面白いけど人に薦めていいかは迷うなぁ」と感じています。そこの話も含めて競プロが大好きな人の目線からの紹介ができたらな、と思います!
競プロのざっくりとした説明
多くがオンライン上で行われるプログラミングコンテストの形で行われます。開始と共に課題が与えられ、より多く素早く正確に課題を解決する能力を競う競技です。
採点方法が特殊で、提出するとオンラインジャッジ上で即座に採点されリアルタイムで順位表の更新が行われます。(間違ったらその場で即バツをつけられて解き直すことの出来る数学のテスト、というのが表現としては近いかも?)
国内最大の競技プログラミング運営サイトAtCoderでは毎週末コンテストが開かれていて、多い時では約1万人ほどのプレイヤーがリアルタイムで競い合っています。
勿論コンテストに出なくとも過去の問題を解くことが出来るので自分の好きなペースで練習する事も出来ます!(下のリンクは実際に出題された問題で、試しに見てみるとイメージが湧くかもしれません)
https://atcoder.jp/contests/abc160/tasks/abc160_a
https://atcoder.jp/contests/abc161/tasks/abc161_b
またコンテストで競い合った結果はレーティングという形で表現され、これも人々を魅力するコンテンツ性の一つになっていると思います。
参考までに今の僕のレーティングはこんな感じです。一年前の春初めてPCを触り始めたぐらいのガチガチの初心者だったのですが今ではある程度の成績も残せるぐらいにはなれました!興味を持ったら初心者でも遠慮せず始めてみましょう!
競プロで身につくこと&身につかないこと
僕は競プロにしか触れてない人材なので分からないことは憶測で語ります
身につくこと
プログラミングの基本
タイピングスピードの向上(PC触る時間が増えるので)
問題を小問題ごとに分割して考えて本質を分析・読み取る力
見落としなく全ての場合を網羅する力
計算量の兼ね合いも考慮しつつ、複雑な事象を正確に簡潔に実装する力
デバック能力(実装を見てコーナーケースを発見する力)
身につかないこと
大規模開発の設計・実装等の経験
セキュリティ周りの知識・経験
自分のwebサイトを作る能力
言語に対する深い理解
まとめると、競技プログラミングはある程度の実装力と数学的な処理の力しか保証しません。(良くも悪くもネトゲーに過ぎないっていう評価は的を射ていると思います)
とはいえ、これらは蔑ろにする能力ではないのでやって損をすることは無いです。
また競プロを初心者に薦めるメリットとして、圧倒的な手軽さが挙げられます。
プログラミング初心者が何かを作ろうとして方針を決め、実際に完成まで漕ぎ着くのは簡単では無く難しいことだと思います。
一方競プロは課題や目標が分かりやすく努力による成長を実感しやすいという面があり、他のプログラミングにも使える基本的な知識を身に付ける入門に役立ちます。
(しかしこの入り込みやすい性質が良くも悪くも作用して、競プロしかやらない人材(例えば僕)の増加を招いているのは事実だと思っていて、本当は良く無いんだろうなと思っていることもあり積極的に人に薦めていいのかと葛藤を抱えています)
基本的には僕は競技プログラミングが大好きなのでもっと色んな人に知って貰って始めて欲しい〜!って思ってますよ!!
競プロ関連のイベント
(気を取り直して)競技プログラマーの日常に迫る
コンテスト
競技プログラマーにとってはコンテストが最も日常的かつ最大のイベントです。参考までに去年の12月のコンテスト予定のメモを紹介します。
12/14 20:05〜technocup4
12/15 14:05〜 #.607div1div2
12/15 18:05〜 #.608div2
12/18 00:05〜グロフォ6
12/19 23:35~ECR78
12/21 20:05~#.609div1div2
12/22 21:00~ABC148
12/22 SRM773
12/24 Xmasコン
12/27 23:35〜ECR79
12/28 21:00〜AGC041
12/29 20:00〜ABC149
12/29 23:05~Good Bye2019
何を言ってるのかよく分からないとは思いますが、とにかく退屈しない日常を提供する保証はあると思います(?)
ICPC
3人1組のチーム戦を行う大学対抗プログラミングコンテストで、最も歴史のある大会です。
2年前には大学史上初の世界大会進出を決めるなど、早稲田大学内ではこれまで以上の盛り上がりを見せていて(多分)今始めると楽しいと思います(多分)
去年も同じMISWサークル内でチームを組んで出てみた〜という話は存在していました。サークル仲間や友達とチーム組んで出場すれば楽しい思い出になると思いますよ!
オンサイトコンテスト
普段のコンテストは基本ネット上で行われますが、年に数回企業スポンサーでオンライン予選、オンサイトでの決勝という形でコンテストが開かれることがあります。
このオンサイトイベントが楽しいんです!(ここ記事タイトルと矛盾してますね)
僕は去年運よく本戦に進めたコンテストがあり、その時の経験に基づいて魅力を語ります。(1,2,3は場合に依ります)
交通費支給→地方の人にとって交通費支給型のイベントはかなり魅力的ですよね
賞金getのチャンス!→超強い人達が賞金枠を独占します(こわい)
美味しいご飯が食べられる!→モノで釣ります、美味しかったです(画像略)
普段競い合う人と実際に会って話すのが楽しい→真理
実際競技プログラミングを通じて、去年1年間で大学・学年の幅を超えた知り合いが沢山増えました。同じ趣味を持つ人々と集まるのは楽しいし、何より刺激になるのでオススメです。
このような企業のコンテストではない有志でのイベント(大学サークル主催の合宿等)も盛んで、自分に合った楽しみ方が見つけられると思います!
今すぐ始めたいあなたに
競プロ面白そう??ならば今すぐ始めよう!!!
AtCoderを開き、右上から新規登録をしてしまいましょう。
なんとサイト内でc++の勉強用ページが存在しています。驚くことに無料です。
ここの教えに従えば簡単にプログラミングの基礎は学ぶことが出来ると思います。また少し慣れてきたら
ここで競技プログラミングの基礎を学ぶのがオススメです。
終わりに
どうだったでしょうか。競プロに興味が湧いた/湧かなかったの関係無しに、少しでもやってみたい事のヒントになって頂けたら嬉しいです。
今回競プロには興味関心が湧かなかったとしても、MISWは様々な分野の創作活動を志す人々が集まっているので他にビビッと来る出会いがあるかもしれません。
そんな僕自身も今年は競プロ以外へ興味を広げてみたいなぁって思いがあります。是非サークル活動でお会いしましょう!見学等お待ちしています!
明日はタニシ君の記事です!お楽しみに〜