20 ポイント 投稿者 GN⁺ 2025-12-01 | 2件のコメント | WhatsAppで共有
  • Advent of Codeは、さまざまなレベルのプログラマー向けのプログラミングパズル・アドベントカレンダーで、どの言語でも解答可能
  • 参加者は面接準備、企業研修、大学の課題、練習問題、スピード競争など、さまざまな目的で活用可能
  • コンピュータサイエンス専攻でなくても参加でき、10年前のコンピュータでも15秒以内に実行可能な問題で構成されている
  • サイトはOAuth認証ハイコントラストモードプライベートリーダーボードコードブロック選択機能などをサポート
  • 全世界リーダーボードはストレスと不正行為の問題により廃止され、参加者中心の楽しい問題解決体験が重視されている

Advent of Code の概要

  • Advent of CodeはEric Wastlが作成した年次プログラミングパズルイベントで、毎年12月1日から始まるオンラインのアドベントカレンダー形式でパズルを提供
    • 参加者は毎日新しい問題を解き、言語の制約なく自由に取り組める
    • 問題は面接対策、教育、練習、競争、相互チャレンジなど、さまざまな用途で活用される
  • 参加にコンピュータサイエンスの専攻知識は不要で、基本的なプログラミングと問題解決能力があれば十分
    • すべての問題は10年前のハードウェアでも15秒以内に実行完了できる

参加と支援の方法

  • Advent of Codeを支援するには、Bluesky、Twitter、Mastodonなどで共有するか、**AoC++**を通じて直接支援可能
  • 問題を解いていて行き詰まった場合は、サンプル入力の確認、テストケースの作成、友人に助けを求める、subredditでヒントを求めるといった方法が推奨される

一般的なヒント (General Tips)

  • サンプル入力と出力が一致しない場合は、問題文を読み直し、コードの動作を確認する必要がある
  • サンプルを通過しても答えが間違っている場合は、手動で検証可能なテストケースを作成して確認
  • それでも解決が難しい場合は、少し休んでから再挑戦したり、コミュニティに質問したりできる

よくある質問 (FAQ)

  • コードブロック選択: JavaScriptが有効な状態でトリプルクリックすると全文選択が可能
  • 認証方式: OAuthを使用してReddit、GitHubなどの外部サービスでログインし、認証情報は該当サービスにのみ送信される
    • Advent of CodeはユーザーのID、名前、URL、画像のみを保存
  • 難易度の変化: イベント期間中に徐々に難しくなり、個人の技術レベルによって体感難易度は異なる
  • パズル公開時刻: 米国東部標準時 (UTC-5) の深夜0時に公開される。これは運営者が管理しやすい時間帯であるため
    • 競争を望む場合は、プライベートリーダーボードを通じて地域ごとに競うことができる
  • 可読性の問題: ハイコントラストモードをサポートし、Firefoxではデフォルトで有効化可能
  • パズル提案の禁止: 著作権上の問題により、外部からパズルのアイデアは受け付けない
  • バグ報告: パズル公開から1時間以上経っていれば、すでに多くのユーザーが解いているため、バグの可能性は低い
    • 問題が発生した場合は、まずsubredditで確認することが推奨される
  • スピード競争かどうか: 素早い解答を目指すなら追加の練習と技術が必要だが、自分の目標に合った方法で参加することが重要
  • イベント日数の変更: 10年間スケジュールを維持した後、運営者の時間的負担の軽減のため、月半ばで終了する形に変更
  • グローバルリーダーボードの廃止: 過度な競争やDDoS攻撃、ユーザーストレスなどの問題により、10年後に廃止
    • 代わりに読み取り専用のプライベートリーダーボード共有機能を提供
  • AIの利用: パズルは人間の思考力向上を目的としているため、AIの利用は推奨されない
    • 「代わりに運動をさせても本人は強くならない」という比喩で説明されている
  • コンテンツ複製の禁止: Advent of Codeは無料で利用できるが、パズル本文や入力データの複製は禁止
    • ウェブサイトのデザインや名称を模倣する行為も禁止

クレジット (Credits)

  • パズル、コード、デザイン: Eric Wastl
  • ベータテスト: Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
  • コミュニティマネージャー: Danielle Lucek, Aneurysm9
  • 参加者: すべてのユーザー

法的告知 (Legal)

  • Advent of Codeは米国登録商標であり、デザイン・文言・スタイル・コンセプトはすべて独占的資産
    • 明示的な書面による同意なく複製や使用は不可
  • パズルへのリンクや引用は自由に可能であり、商業的文脈でも許可される
  • Advent of Codeは参加者の解答コードに対する著作権を主張しない

2件のコメント

 
roxie 2025-12-01

去年も少し参加していましたが……本当に1年はあっという間ですね(涙)

 
GN⁺ 2025-12-01
Hacker Newsの意見
  • コンピュータサイエンスの背景がなくても参加できるという話を聞くたびに、実際には趣味プログラマーにとってはがっかりさせられることもあると感じる
    「かなり先まで行ける」というのが1〜2問の簡単な問題を解く程度ならその通りだが、それ以上は簡単ではない

    • 問題が「簡単すぎる」と言う人もいたが、自分はいったいどんな世界に生きているのかと不思議に思った
    • 私も同感。開発者として働いている友人たちが思ったほど進めていないのを見て驚いた
  • Advent of Codeは毎年12月のハイライト
    グローバルリーダーボードがなくなったのは残念だが、理解はできる。今年は12日間だけなのも負担が減ってよい
    「勝とう」とするのではなく、単純に問題解決の楽しさを味わうことを勧めたい

    • 12日間とはいえ実際には24個のチャレンジなので、私は24日間かけてゆっくり楽しむつもりだ
    • 12日に減ったのは残念だが、グローバルリーダーボードはもともとタイムゾーンの偏りのせいで実質的な競争が難しかった。個人リーダーボードのほうがずっとよい
    • 今年は友人たちとローカルリーダーボードを作ってみるつもりだ。グローバルにはどうせ入れなかっただろうし
    • こういうイベントにまったく興味がないのを見ると、自分は開発者ではないのだと確信する
  • 私は Advent of Code が本当に大好き
    今年が12日間だけなのはむしろ歓迎だ。年末は現実の予定が多くて、去年は半分くらいしかできなかった
    参加者たちに大きな感謝を伝えたい

    • 去年は7日目までしかやれなかったが、今年は負担が軽くてよい
    • 今回こそついに完走できるかもしれない
    • 今年がとても楽しみだ
  • 今年初めて Advent of Code をやってみたが、本当に面白かった
    Project Euler に似ているが、数学よりもプログラミング寄りだ
    第1段階は簡単だが、第2段階は最適化されたアプローチを求められるので興味深い

  • パブリックリーダーボードをなくしたのは合理的だ
    LLMの問題を抜きにしても、特定のアメリカの時間帯以外では競争が不可能だった
    その代わり、世界全体でタイムゾーン別の解答率のような統計が見られたら面白そうだ

    • LLMが台無しにしてしまったが、以前は本当に上位勢の解法を見るのが面白かった
      YouTubeでリアルタイムのコーディング動画を見る楽しさもあった
  • Advent of Code を毎年楽しみに待っている
    リーダーボードにストレスを感じることなく、新しい言語を学んだり技術を磨く機会にしている
    普段は自分でプロジェクトをブートストラップしたり DFS を実装したりすることはないので、こういうイベントはよい練習になる

    • 私もこういう問題だけを解く仕事をしてみたいが、たぶん燃え尽きてしまうと思う
      だから普段はテスト作成やドキュメント化のような仕事でバランスを取っている
      毎年、以前の問題を少しずつ改善しながら効率性と可読性を高める練習をしている
  • 今年も Advent of Code が開催されてうれしい
    FAQを読んでいて、入力データを公開してはいけないというルールがよく理解できなかった
    パズル本文は分かるが、入力まで非公開でなければならないのは惜しい。それでも無料で楽しんでいる以上、尊重する

    • 入力が公開されると、誰かがパズル生成ロジックを複製できてしまうからだそうだ
    • サンプル入力だけをコミットして、テストはそれで回せば十分だ。Python や Rust の doctest のように構造化すればきれいだ
    • 私はコードは公開するが、入力はprivate submoduleで管理している
    • git-crypt で入力ファイルを暗号化して公開リポジトリに置いている
  • 言語アンケート: Python と C++ が主に使われているが、非主流言語の中にも AoC によく合うものがある
    どの言語がよいか共有してみようという提案だ

    • 私は K や Uiua のような配列言語が好きだ。見た目は奇抜だが、序盤の問題にはぴったりだ
      冗談だが、たまに Game Boy 向けの ASM で解いてみることもある。実際には Clojure や Python を使う
    • 私は Haskell+Bash スタイルで作った自作言語を使っている。YouTubeデモ もある
      今年はバイトコードコンパイラを作っている。リーダーボードでは Go を使うが、コンパイル速度のおかげで 2022年 Day19 で1位になった
    • Haskell を使うとパーサーコンビネータで入力処理がしやすい。しかも遅延評価と再帰によって簡潔なコードが書ける
      たとえば、無限リストを生成して条件を満たすまで走査するような形で解いている
    • Ruby が理想的だ。表現力のある構文と豊富な標準ライブラリ、文字列処理ツールが多い
      each_cons, permutation, prime のようなメソッドが AoC に役立つ
    • Go は速くて単純なのがよく、OCaml は型システムと実行速度が素晴らしい
      あらかじめ 2D グリッドやパーサーユーティリティを用意しておくと、ずっと効率的だ
  • 今年はアセンブリ(fasm) で挑戦してみるつもりだ
    面白いかもしれないし苦しいかもしれないが、とにかく学ぶための過程だ

  • 去年のAI自動化ブームの後でリーダーボードがなくなったようだ
    残念だが避けられない判断に見える

    • パズル公開時間がアメリカ基準だったので、私はいつも寝ている時間だった
      どうせ競争は難しかったのだから、グローバルリーダーボードにはあまり意味がなかった