Skip to content

アルゴリズムから始める Elixir 入門

Elixir を使ってアルゴリズムとデータ構造を TDD で学ぶシリーズです。

Elixir は Erlang VM(BEAM)上で動作する関数型プログラミング言語です。パターンマッチ、パイプ演算子(|>)、不変データ構造、Enum/Stream モジュール、defstruct による構造化データ、軽量プロセス(Agent/GenServer)を活用した簡潔で並行性に優れた実装を学びます。

章構成

第 1 部: 基本

テーマ
第 1 章 基本的なアルゴリズム 3 値の最大値・中央値、条件判定、繰り返し処理
第 2 章 配列 リスト操作、基数変換、素数列挙
第 3 章 探索アルゴリズム 線形探索、二分探索、ハッシュ法

第 2 部: データ構造

テーマ
第 4 章 スタックとキュー Agent ベースのスタック・キュー
第 5 章 再帰アルゴリズム 階乗、GCD、ハノイの塔、8 クイーン問題

第 3 部: ソートと文字列

テーマ
第 6 章 ソートアルゴリズム バブル、選択、挿入、シェル、クイック、マージ、ヒープ、度数ソート
第 7 章 文字列処理 ブルートフォース探索、KMP 法、文字数カウント、回文判定

第 4 部: 高度なデータ構造

テーマ
第 8 章 リスト 単方向リスト、双方向リスト
第 9 章 木構造 二分探索木(BST)、走査 3 種

Elixir の特徴

特徴 説明
パターンマッチ 関数頭部・casecond による条件分岐
パイプ演算子 \|> データ変換チェーンを読みやすく記述
Enum / Stream リスト処理・遅延評価
defstruct 構造化データの定義
Agent 可変状態の管理(プロセスベース)
末尾再帰最適化 BEAM VM による末尾再帰の最適化
イミュータブルデータ すべてのデータが不変

実装コード

実装コードは apps/elixir/ にあります。

参考文献

  • 『新・明解 Python で学ぶアルゴリズムとデータ構造』 -- 柴田望洋
  • 『テスト駆動開発』 -- Kent Beck
  • 『Programming Elixir >= 1.6』 -- Dave Thomas