Class: CellularAutomata::Rule

Inherits:
Object
  • Object
show all
Defined in:
lib/cellular_automata/rule.rb

Instance Method Summary collapse

Constructor Details

#initialize(rule_string) ⇒ Rule

Returns a new instance of Rule.

Raises:

  • (ArgumentError)


2
3
4
5
6
7
8
# File 'lib/cellular_automata/rule.rb', line 2

def initialize(rule_string)
  rules = rule_string.downcase.scan(/[bs]\d+/)
  raise ArgumentError.new("Invalid rule string #{rule_string}") if rules.length != 2
  birth = rules.select {|s| s.start_with?('b')}.first
  survive = rules.select {|s| s.start_with?('s')}.first
  @rule_array = rules_array_from birth: birth, survive: survive
end

Instance Method Details

#process(input) ⇒ Object



10
11
12
# File 'lib/cellular_automata/rule.rb', line 10

def process(input)
  return @rule_array[input.to_i] || raise(ArgumentError.new("I don't know what to do with #{input.class} #{input}"))
end