main
 1class World
 2  include Enumerable
 3
 4  def initialize(cells)
 5    @cells = cells
 6  end
 7
 8  def neighbors_for(cell)
 9    @cells.find_all { |x| cell.neighbor?(x) }
10  end
11
12  def next_generation!
13    @cells = map { |cell| cell.spawn(self) }
14  end
15
16  def each
17    @cells.each do |cell|
18      yield cell
19    end
20  end
21
22  def empty?
23    !any? { |x| x.alive? }
24  end
25end