ICON公式ブログ

ICON公式ブログ

静岡大学コンテンツ制作サークルICONの公式ブログです

【pythonではじめるゲームプログラミング 番外編2】AtCoderをはじめよう!

f:id:iconcreator:20210604055436p:plain


今回の記事はICONのpython勉強会の資料として書かれました。

担当は ふれうと です



はじめに


pythonではじめるゲームプログラミング】の記事でプログラミングについて、多くのことを今まで学んできました。

特に順次、分岐、反復の基本処理を学んだのなら、学んだことをアウトプットする場が欲しくなっているころだと思います。

もちろん、ゲームプログラミングがあるのですが、今回の記事ではそれ以外のプログラミングの楽しみもあることを紹介します。


それは何かと言うと... 競技プログラミングです!!


「タイトルにはAtCoderってあるけど、何?競技プログラミングとはちがうの?」と思った方、賢しい...順を追って説明します。


まず、競技プログラミングとは、与えられた条件下で、求められた入出力(あるいは別の挙動)を行うプログラムを作成する競技です。

自分のプログラミング能力が測る指標の一つとして使えますし、やってみると楽しいですよ。


そして、AtCoderとは、その競技プログラミングのコンテストが行われるWebサイトです。

競技プログラミングの代名詞的存在と言っても過言ではないように思います。

AtCoder競技プログラミングの全てと言っているわけではないのであしからず。)


それではさっそくやっていきましょう!


AtCoderへのログイン


まず、AtCoderのアカウント登録をしましょう。

以下がAtCoderのサイトです。


atcoder.jp


アカウント登録とかの説明は以下のページを見ながらどうぞ。


atcoder.jp


以下のページも参考になります。


qiita.com


登録できましたか?

登録できたら、さっそくコンテストに参加してみましょう。


コンテストに参加


コンテストに参加してみましょう。

コンテストには2種類あって、常設のコンテストと主に毎週末に開催されるコンテストがあります。

週末に開催されるコンテストに参加すると、その結果によって自分のコンテストスコアが増減します。それによって、大まかに自分がどれくらいのプログラミング能力を持っているか分かる訳ですね。また、ゲームのオンラインランキングのように他人と比較もできます。

(他人と比較し始めると青天井なので、比較対象は過去の自分をオススメしますが。)


今回は常設のコンテストに参加してみましょう。

特にスコアの増減はありませんし、AtCoderに初めて触れる人のためのコンテストなので、肩の力を抜いてやってみましょう。

まず、以下のコンテストのA問題をどうぞ(B問題は難しいのとりあえず置いときましょう。)


atcoder.jp


もし、ページの見方が分からないなどあれば、先ほども紹介した以下のページを参考に。


qiita.com


このコンテスト「practice contest」のA問題「Welcome to AtCoder」には参考解答が載っていますので、わからなければ見てみましょう。

特に入出力に関しては、慣れないとどうして良いかわからないと思います。


pythonの参考解答に関して、

いくつか見慣れない命令関数がありますね。一つずつ見ていきましょう。

map()...これはmap(第一関数, 第二引数)という形で書かれ、第二引数に第一関数を適応するという処理を指します。ここでは、入力されたinput()split()されたものをintに型キャストして、変数b,cに代入したということになります。

split()...これは、変数.split(引数)引数の条件で変数を分割するというメソッドです。今回は引数が無いので、スペースで分割します。例えば5 11という入力なら511に分割します。

format()これは、print()内の{}format()内の値を代入するメソッドです。今回は{}が二つあるので、format()内の値も二つあります。

format()を使わずに、

print(str(a + b + c) + " " + s)

と書く方法もあります。


いかがでしょう?競技プログラミングの雰囲気は掴めましたかね?

競技プログラミングが楽しくなってきたら、毎週末のコンテストに参加したりしてみましょう!


ABSに挑戦!


まだまだ全然歯ごたえが足りないという方もいると思います。

あるいは、週末のコンテストまで待てない!という方も。


そんな方のためにAtCoderの過去のコンテストは残っているのでいつでも解くことができます。

その中でも初心者におすすめの10問がまとめられているコンテストがあります。

その名も AtCoder Beginners Selection

以下のページへどうぞ

atcoder.jp


このコンテストの優れたところは詳しい解説があることです。

(各コンテストにも解説はありますが、初心者向けとしてはこの問題と解説は非常に良いものだと思います。)

解説は以下のページ

qiita.com


また、pythonでの参考解答もインターネット上にたくさんあります。

一例を紹介すると

qiita.com


もし解説を読んで、参考解答を見ても「わけわからん」と思った時は、一旦置いといて、またプログラミングの勉強を続けましょう。インプットが増えてくればわかるようになる時が来ます。

あるいは、ICONの先輩や同級生に聞いてみるのも良いと思います!


終わりに


今回は「競技プログラミング」と「AtCoder」の紹介をしました。

競技プログラミングを少しでも楽しいと思ってもらえれば僥倖です。