ポール#
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が、幕の裏側のストーリーをいくつかの場面で共有しています。
一緒に遊びましょう!