class Conwy::World::CellGrid
Public Class Methods
from_s(string)
click to toggle source
# File lib/conwy/world.rb, line 20 def self.from_s(string) new(string.split("\n").map do |row| row.each_char.map do |char| Cell.new(alive: char == '1') end end) end
Public Instance Methods
next()
click to toggle source
# File lib/conwy/world.rb, line 36 def next self.class.new(map.with_index do |row, x| row.map.with_index do |cell, y| cell.next(alive_neighbors: alive_neighbors(Coordinate.new(x, y))) end end) end
to_s()
click to toggle source
# File lib/conwy/world.rb, line 28 def to_s map do |row| row.map do |cell| cell.alive? ? 1 : 0 end.join end.join("\n") end
Private Instance Methods
alive_neighbors(coordinate)
click to toggle source
# File lib/conwy/world.rb, line 46 def alive_neighbors(coordinate) neighbors(coordinate).select(&:alive?).size end
at(coordinate)
click to toggle source
# File lib/conwy/world.rb, line 56 def at(coordinate) fetch(coordinate.x, {})[coordinate.y] unless coordinate.negative? end
neighbors(coordinate)
click to toggle source
# File lib/conwy/world.rb, line 50 def neighbors(coordinate) coordinate.neighbors.map do |neighbor_coordinate| at(neighbor_coordinate) end.compact end