アルゴリズムから始める Ruby 入門
Ruby を使ってアルゴリズムとデータ構造を TDD で学ぶシリーズです。
章構成
第 1 部: 基本
第 2 部: データ構造
第 3 部: ソートと文字列
第 4 部: 高度なデータ構造
実装コード
実装コードは apps/ruby/ にあります。
環境
- Ruby: 3.3.x
- テストフレームワーク: RSpec
- Nix devShell:
.#ruby
# Nix 環境に入る
nix develop .#ruby
# テスト実行
cd apps/ruby
bundle install
bundle exec rspec
Ruby の特徴
Python 版と比較した主な相違点:
| 概念 |
Python |
Ruby |
| モジュール |
なし(関数として定義) |
module Algorithm + def self.メソッド名 |
| 例外 |
class MyErr(Exception): |
class MyErr < StandardError; end |
| for ループ |
for i in range(n): |
n.times { \|i\| } / (0...n).each |
| 奇偶判定 |
n % 2 == 0 |
n.even? / n.odd? |
| 配列の長さ |
len(a) |
a.length / a.size |
| 逆順文字列 |
s[::-1] |
s.reverse |
| ハッシュデフォルト値 |
d.get(key, default) |
d.fetch(key, default) |
| 型チェック |
isinstance(x, T) |
x.is_a?(T) |
| nil チェック |
x is None |
x.nil? |
| 同一性チェック |
x is y |
x.equal?(y) |
参考文献
- 『新・明解 Python で学ぶアルゴリズムとデータ構造』 -- 柴田望洋
- 『テスト駆動開発』 -- Kent Beck