ログイン

プログラミングコンテストに参戦!!

 2019.5.10 ゴリラーブログ ブログ ミュージックゴリラー河田

時代は遂に令和となりまして、長いゴールデンウィークも終わり5月病に侵され始める今日この頃、皆さまいかがお過ごしでしょうか?ミュージックゴリラー河田です。

僕はといえば社会人なって、というより二十歳を超えてここまでの連休は初めてだったのでどう過ごしていいかわからず少し持て余してしまったりもしたのですが、実家の愛媛に帰省したり、そのついでに広島に寄り牡蠣を満喫したりとそれなりに充実した休みを送れました。
まさか連休開始早々風邪をひいて寝込むことになるとは想定外でしたが・・・。
で休みが明けて思ったのが、やっぱり程よく働く方がいいですね!
あれだけ休むと働く気力も無くなり、休みのありがたみも忘れていまいそうですよね(^-^;
程よく働いて程よく休む、これに限るのではないかと思います。
それでは令和一発目ブログ、本題に入っていきます!

プログラミングコンテストとは

この度プログラミングコンテストなるものに参加しましたのでその話をしようと思うのですが、まずプログラミングコンテストとは何なのかと言いますと見ての通りプログラミングの技術を競うコンテストのことを言います。でもプログラミングの技術と言っても幅が広すぎて何をどう競うのかわかりませんよね。いくつかの種類に分かれているので紹介していきたいと思います。

・アルゴリズム問題のコンテスト

おそらくコンテストといえばこれが一番代表的なものではないかと思います。
出題された問題に対して制限時間内になるべく早く正確に解答を提出し、点数を競います。
競技プログラミング、略して競コンなんて呼ばれたりしています。問題の内容はと言えば数学的な問題が多く、問題文の答えを導き出すための式をプログラミングするというイメージですかね。ちなみに僕が今回参加したのもこのアルゴリズムのコンテストです。腕試しや僕のように初心者だけどスキルを磨きたいという人におすすめです。

・プログラミング作品のコンテスト

これは何かテーマがあったり、あるいは自由にソフトウェアを作成してその内容を競うというものです。ゲームだったり何かアプリだったりあるいはプログラミング言語そのものを開発する人もいるみたいです。高度な知識がなくてもアイデアやオリジナリティで入賞することもあるそうなので、まだ僕は参加したことがありませんがこちらも是非参加したいと思っています。

・セキュリティのコンテスト

このコンテストは外部からのハッキングなどの攻撃からいかにして守るかというセキュリティの強度を競うタイプのコンテストです。敵チームがいて敵チームからの攻撃から自分のサーバーを守りつつ相手のチームを攻撃するなんてものもあるそうです。が、上に挙げているものより少し敷居が高い気がします。

・AIのコンテスト

そのままですが人工知能に関するコンテストです。AI同士を戦わせたり、あるいはAIで日常に役立つ機能を考えたりと、これからIT社会においてますます発展するでろう分野のコンテストです。

ざっと4つ紹介しましたがまだまだ色々あると思いますので興味がある方は是非調べてみてください。

ゴリラーシート

今回参加した内容の前に少し話が逸れますが、プログラミングコンテストに参加しようと思ったいきさつについて少し書こうと思います。
当社ではゴリラーシートというものがありまして、我々ゴリラー(社員)はそのゴリラーシートに自分の目標や夢を書いて、それに対して具体的な計画、実績、その結果などをミーティングする時間を設けてくれています。そこで報告をしたり上手くいかなかったら反省点を考えたりアドバイスを互いに送ったりしています。そして自分も入社して3か月が経ったのでこのゴリラーシートを書くことになり目標として選んだのが「プログラミングスキルを高める」ということでした。それで更に具体的な方法として挑戦することにしたのがこのプログラミングコンテストなのです。正直なところを言いますとプログラミングコンテストで腕を磨くことが直接業務につながるわけではないのですが、個人の目標として、楽器の腕を磨いていたあの頃のように今度はプログラミングの腕を磨くこと楽しみにながらしたいというのが今の目標であり夢の過程であります。随時どうだったかを報告しないといけないので追い詰められないとなかなか動こうとしない自分にはそれもまたちょうどいい機会です。

コンテスト初参加の結果

では話を戻しまして今回参加したコンテストの話をします。
誤解があったらいけないので先に言っておきますと、コンテストというと大きな体育館のような会場で大人数が集まってというイメージをお持ちの方がいるかもしれませんが、もちろんそういうタイプの大会もあるかとは思うのですが今回僕が参加したのは自宅でネット環境が整ったPCがあれば誰でも参加できます。
AtCoderというサイトのコンテストに参加しました。
AtCoderに関してはまた次回詳しく書きたいと思います。
AtCoder⇒https://atcoder.jp/

で今回参加したのは初心者用のビギナーの大会でしたが4問を100分以内に解くというものでした。結果はと言いますと・・・、
4問中1問だけ正解!!
いや~、悔しい!!ですがもしかしたら1問も正解できないんじゃないかとも思っていたのでそれは免れたと少し安心もしました。
2問目は言い訳になりますが考え方は合っていたのですが、言語の書き方を間違えていてずっとコンパイルエラーになっておりました、残念。
感想としてはめちゃくちゃおもしろかったです。で、正解した時めちゃくちゃ嬉しかったです(笑)
どんな問題か気になる方もいるかと思いますので唯一正解した問題を上げてみます。

<AtCoderホームページより引用>
問題文
数直線上に家1,2,3があり、それぞれのある座標はA,B,Cです。家1から家2まで寄り道をせずにまっすぐ向かう途中で家3のある座標を通る場合は’Yes’を、そうでない場合は’No’を出力してください。

制約
・0<A,B,C<100
・A,B,Cは相異なる整数である

わかる人は2分足らずで解いてしまっていたみたいですが、僕は問題文を理解するのに10分くらいかかりました。
A,B,Cそれぞれの値を入力できるようにプログラムを組んでそれによりYesかNoを返すようにしましょうということです。
自分が書いた解答を含めてまた次回発表しようと思いますので気になった人は考えてみてください。次は約1か月後なのでそれまでにはもう少し正解数を上げられるように腕を磨き続けたいと思います。

最後まで読んでいただきありがとうございました。

© 2019 Mountain Gorilla Co., Ltd.