データ構造シリーズ パート1
このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをRubyでゼロから実装し、実際に問題を解くのに使います。これを終えると、Arrayをスタックやキューとして、Hashを検索表として使うことが、習慣ではなく説明できる選択になります。開始RubyにあるのはArray、Hash、Setで、ヒープも優先度付きキューも連結リストも木もありません。このパスでは、走査がeachブロックひとつで済むRubyで足りない構造をひとつずつ作り、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。
377 レッスン284 チャレンジ702 クイズの問題
各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをRubyで開きます。まだRubyで教えていない3つのコースは、ステップの後にまとめて載せています。
Arrayをスタックやキューとして、Hashを検索表として使うことが、習慣ではなく説明できる選択になります。開始Array、Hash、Setの先で、Rubyがあなたに任せているすべてです。ここで書くヒープは、グラフのステップで必要になる優先度付きキューです。開始Array#sortは安定性を約束していません。このステップを終えれば、8つのソートのうちどれならその約束ができたのかがわかります。開始SystemStackError(stack level too deep)を発生させ、Rubyはデフォルトでは末尾呼び出しを最適化しないので、これほど寛容な言語でも深さには気を配る価値があります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ実際のコードを書き、データベースをクエリし、ウェブサイトを構築し、AIプロンプトをマスターしましょう。インタラクティブなレッスンで現代の開発者に必要なすべてのスキルを網羅しています。
継続して進捗を見守りましょう!毎日のコーディング習慣を追跡し、フリーズ日で連続記録を守り、毎日参加することで報酬を獲得しましょう。
12 日連続
明日も戻ってきて連続記録を維持しましょう!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
ダブル・オア・ナッシング
7日中5日目
連続記録フリーズ
2 left
コーディングの旅を持ち歩こう!セットアップ不要、ダウンロード不要 - 開いてすぐにコーディング開始。iOS、Android、Webで4.9星評価で利用可能。
グローバルリーダーボードで競い、友達を招待して報酬を獲得し、お互いの成功を祝いましょう。プログラミングは友達と一緒の方が楽しい!
読む・聴く・自分を試す・AIに聞く・学んだことを調べる。どんな学び方にも対応したレッスンです。
変数は、後でプログラム内で参照できる値を格納する、名前のついた入れ物です。
Pythonでは、名前、イコール記号、格納したい値の順で書くことで作成します。
値は後から変えられます。再代入すると、名前は新しい値を指すようになります。
完了したすべてのコースで証明書を獲得しましょう。LinkedInプロフィールや履歴書に追加して、雇用主にプログラミングスキルをアピールしましょう。
Arrayはスタックにもキューにもなり、Hashは挿入順を保つハッシュテーブルで、Setは標準ライブラリにあります。その先には、ヒープも優先度付きキューも連結リストも木もありません。Rubyの面接問題でそれらが必要になれば自分で書くことが求められ、このパスでは実際に書きます。Enumerable(each、map、select、reduce)のおかげで走査は1〜2行に収まり、幅優先探索やマージもほとんど疑似コードのように読めます。ただ、それぞれの呼び出しはコストのかかるループであることを忘れないでください。そのコストを数えられるようになることこそ、このパスで学ぶことです。Array#sortは安定性を約束していないので、等しい要素の順序を保つ必要があるときは、sort_by.with_index { |x, i| [x, i] }のようにペアでソートすることです。Arrayはスタック(push、pop)にもキュー(push、shift)にもなる動的配列、Hashは挿入順を覚えているハッシュテーブル、標準ライブラリのSetはハッシュベースのセットです。これで全部です。ヒープ、優先度付きキュー、連結リスト、木、トライ木、グラフはないので、それらはステップ1と2で自分で作ります。bsearch_indexとinsertでソート済みを保つ方法(プッシュごとにO(n))、そしてArrayの上に二分ヒープを書く方法(プッシュもポップもO(log n))です。面接官が求めているのは3つ目で、それを作るのがステップ2です。Hashが挿入順を保つことは、アルゴリズムにとってなぜ重要なのですか?Hashで、追い出しは最も古いエントリを取り除くshiftです。多くの言語では、これにハッシュテーブルと双方向連結リストが必要です。どちらもステップ1と2で作る構造なので、Rubyが代わりに何をしてくれているのかを説明できるようになります。Hash.new { |h, n| h[n] = n < 2 ? n : h[n - 1] + h[n - 2] }のようにデフォルトブロック付きのHashにできます。またn[i]で整数のビットiを直接読めます。C++なら(n >> i) & 1と書くところです。