ポール#
2017 年、私は大学の 2 年生でした。この時点で、私は本格的にコンピュータプログラミングを学び始めてから 1 年も経っていませんでした。
ポール・デンプスターは私たちの大学の教師でした(ノッティンガムで 10 年間勤務した後、彼は現在Lancasterで教鞭をとっています)。私は今でも彼が授業で見せてくれた姿を覚えています。シンプルな PPT のレイアウトと共に、IDE とターミナルを使って私たち初心者の子供たちに基本的なプログラミング知識を熟達して教えてくれました。
他の先生が教えるコンピュータ理論の授業と比べて、私は彼の C 言語の授業の方が好きでした。それはより実用的で楽しいと思いました。私は彼が私たちに割り当てた毎週の 30 分間のクイズが新鮮で面白く、時には挑戦的だったことを覚えています。例えば、リンクリストのメソッドを制限時間内に完成させることや、レイアウトが乱れた C 言語のソースファイルを制限時間内に整形することなど(当時の私は IDE のフォーマッターを使わずに手動でフォーマットしていました)。この興味が私を期末のプログラミング課題で 99/100 の成績を取ることにつながりました。
私の初めての AdventOfCode#
大学 2 年生の前期の復習期間に、ポールからAdventOfCode.comについてのメールが届きました(学校のメールアカウントにアクセスできなくなったため、メールの本文を紛失してしまいました)。
そのメールでは、いくつかの段落でこのウェブサイトがプログラミングパズルのウェブサイトであり、12 月 1 日からクリスマスまで毎日 1 つの問題が解放され、各問題には難易度が徐々に上がる 2 つのパートがありますと紹介されていました。各パートを完了すると、1 つの星がもらえ、25 日間で合計 50 個の星を獲得できます。世界中の多くの人々が参加しています。人々はこのウェブサイトを使って高速解決競技、面接の準備、プログラミングスキルの向上、競争、または単にエンターテイメントを楽しんでいます。
ポールは私たちに参加して一緒に遊ぶためのプライベートリーダーボードも作成しました。最後に参加したのは 10 人もいませんでしたが。
私はウェブサイトを開いて、数分で最初の日の問題を解いて 2 つの星を手に入れました。私はとても興奮しました。
私と同じく興奮していたのは、私のルームメイトであり、優等生であり、凄腕のプログラマーでもある人です。
その後の数日間、私たちは毎日午後 1 時(GMT+8、つまり EST の 0 時)に問題が解放されるのを待ち、解答に挑みました。
しかし、毎日が順調ではありませんでした。後になるほど問題の難易度が上がりました。私たちは問題の意味を誤解して間違った答えを提出したり、ロジックを誤って書いたりして一時的に凍結されたり、効率の悪いロジックを書いたりして長い間待たなければならないことがよくありました(プレイしてみればわかります)。
私たちは拙いコードを書きましたが、それが問題を解くことができることに大いに喜びを感じました。そして、コードを最適化するために努力し、より効率的に動作することを願いました。
ある日、私は問題の解法を可視化した動画さえ作りました。
最終的に、私たちは 25 日間の問題を全て解きました。
私たちはとても幸せでした。
毎年 12 月のお供#
2015 年から、毎年のクリスマスには、AdventOfCode には背景ストーリーがあり、毎日の進捗に合わせてストーリーが進展し、最終的にクリスマスの日に完結します。そして、問題を解く人々は楽しくて挑戦的な 1 ヶ月を過ごし、本当に祝福に値するとともに、素晴らしい思い出を残します。
その後の毎年、私はこのイベントをさまざまな人々に紹介しました - 新しいクラスメート、新しい友人、新しい同僚...
2019 年の初めの数日間、私は毎日異なる言語で問題を解くことを試みました(Songkeys/advent-of-code-2019)。
残念ながら、さまざまな理由で 10 日以上続けることができず、すべての星を集めることができませんでした。時間を割く余裕がなくなり、同僚や友人との共同参加もありませんでしたからです。
それでは、また遊びましょう#
あっという間に、なんと 5 年も経ってしまい、もう 2022 年です。
私はもう初心者のような無知なコーダーではありません。今では、自分が書くコードも学習や興味のためだけでなく、仕事やプロジェクトの目的を持っています。それには異なる楽しみもありますが、初めの頃と比べると何かが足りないと感じます。
私は今年のクリスマスまでに 50 個の星を集めるという目標を立てることにしました。そして、これからの数日間で過去のレベルを徐々に追いついていくつもりです。
もし私の話に感銘を受けたなら、今年の 12 月 1 日をお待ちしています!
コミュニティ#
そうそう、以下のコミュニティもぜひ訪れてみてください:
- Discord:私はこの Discord サーバーで何年も遊んでいます。世界トップ 100 のプログラミングの達人や、さまざまな言語のエキスパート、初心者などがいます。異なるタイムゾーンの人々が一緒に問題の解放を待ち、問題を議論し、お互いにヒントを与え合って助け合っています。
- Reddit:このサブレディットでは、他のイベント(例えば、ある年の毎日の詩)、プログラミングの達人たちの解答(例えば、Arduino を使った解答、Minecraft を使った解答、折りたたみ式のスマートフォンを使った解答、解答方法を論文で論証した)や、興味深いミーム画像などを見ることができます。
- Behind the scenes (videos):作者のEric Wastlは、いくつかの場で舞台裏のストーリーを共有しています。
一緒に遊びましょう。