プログラミング基礎力をAdvent of Code 2021で鍛えよう!

プログラミングパズルのアドベントカレンダー、Advent of Code 2021 を紹介します。

本記事はこんな方にオススメ!

プログラミング初心者、もしくは新しいプログラミング言語を学ぼうという方。
あるいはプログラミングで軽い頭の体操をしながら師走を感じたい方。
注:実践には少しの英語力か、英→日の翻訳サイトが必要です。

プログラミングのはじめかた

プログラミングを1から始めたいと思い立った方や、新しいプログラミング言語を触ろうという方が最初にすることといえば何でしょう?

ほとんどの場合は、開発環境の構築を行ってから、コンソールにhello world!と出力する流れがお決まりだと思います。

現代人
現代人

プログラミングを始めたのは、こんなつまらないことをやるためじゃない!

と現代なら誰もが感じますが、環境構築が正しくできているかを確認する簡素な手段としては依然有効です。地鎮祭みたいなものです。

さて世界に挨拶したところで、次に何をしましょうか?
プログラミングの基礎(手続き型言語なら分岐や繰り返しなど)を学ぶために、Fizz Buzz なんかを書くのではないでしょうか。

でも、せっかく12月なので(?)、どうせならもう少し冒険してみませんか?
Advent of Code 2021は、あなたにちょっとしたプログラミングの課題とワクワクを与えてくれます。

Advent of Code 2021とは

Advent of Code 2021 は、あなたの好きなプログラミング言語で解くことのできる、小さなプログラミングパズルの アドベントカレンダー です。
コンピュータ工学を学んだ経験? 不要です!
また、ハイスペックなPCも不要です!(10年前のパソコンでも、15秒あれば処理できる課題しかありません)
なお、出題含め全編英語です。ハードルを感じる方もいるかもしれませんが、DeepLなどを使えば多分大丈夫です。

完全に無料で楽しめますが、解答の提出には GitHub/Google/Twitter/Reddit のいずれかによる認証が必要です。

問題を解く流れは「問題文を読む」「問題を解くプログラムを書く」「与えられたデータを入力し、解答を出力する」「解答を提出する」「正解なら2問目に進み、同様に解く」となります。

ストーリー

Advent of Code 2021にはこんなストーリーがあります。

あなたが船の上で仕事をしていると、船外警報が鳴り響きました。
慌てて駆けつけてみると、どうやらエルフの一人がつまづいて、そりの鍵を海に飛ばしてしまったようです。

気がつくとあなたは、エルフがこんな時のために用意しておいた潜水艦の中にいます。
潜水艦はクリスマス・イルミネーションで覆われていて、実験用のアンテナも設置されています。
アンテナの信号強度を高めることができれば、鍵を追跡することができます。

クリスマスを救うためには、12月25日までに50個の星を獲得しなければならないとあなたの直感が言っています。

Advent of Code 2021 Day 1: Sonar Sweep

そんなわけであなたは、12月1日から25日まで毎日2問ずつ公開される、小さなパズル問題を解くことになったのです。

1日目: ソナー探知

1日目の問題 “Sonar Sweep” を 簡単に翻訳して紹介します。

ストーリー

あなたの乗った潜水艦は、ソナー信号を海面に向けて発し、定期的に潜水艦の深さ(深度)を測定しています。
そりの鍵は海底へ向かってどんどん沈んでいくので、あなたの乗った潜水艦で追いかけるためにどれだけ早く深度を上げられるかを知りたいです。

問題

入力データとして、改行で区切られたいくつかの数値が与えられます。これは深度の測定結果を時系列に並べたものです。
ある行の数値が前の行より大きければ、直前の測定より深度が増加した(depth measurement increases)とカウントします。
深度が増加した回数は何回ですか?
ただし、先頭1行目については直前の測定結果がないのでカウントしません。

サンプル入力

199
200
208
210
200
207
240
269
260
263

上記の例では、測定結果は7回増加しているため、答えは7です。

199 (N/A - 前回の測定結果がありません)
200 (増加)
208 (増加)
210 (増加)
200 (減少)
207 (増加)
240 (増加)
269 (増加)
260 (減少)
263 (増加)

実際の入力は “To begin, get your puzzle input.” と書かれたリンクから取得できます。
手元のプログラミング環境で解いたら、解答をSubmitしましょう。

1問目に正解した場合、星を1つ獲得し、ページの続きで2問目が出題されます。
1日目の場合、入力は1問目と同じで、問題に少しひねりが加わったものとなります。
先ほどの勢いに任せて2つ目の星もゲットしましょう!

まとめ

前回記事では競技プログラミングを紹介しましたが、プログラミングや数学の知識をある程度求められるなど、正直に言って参加のハードルは高いです。
その点 Advent of Code 2021 は前提として求められる知識が少なめで、時間や解き方の制限もないので簡単に始められます。

もう今年も終わろうという12月ですが、これからプログラミングを始めるぞ! という方はぜひチェックしてみてください。


競技プログラミングの記事はこちら!

AtCoderで水色コーダーになりました【競技プログラミング】

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA