padovan = Enumerator.new do |y|
  ar = [1, 1, 1]
  loop do
    ar << ar.first(2).sum
    y  << ar.shift
  end
end

P, S = 1.324717957244746025960908854, 1.0453567932525329623
def padovan_f(n) = (P**(n-1) / S + 0.5).floor

puts 
puts 

n = 63
bool =  (0...n).map{|n| padovan_f(n)} == padovan.take(n)
puts 
puts

def l_system(axiom = , rules = { => ,  => ,  => } )
  return enum_for(__method__,  axiom, rules) unless block_given? 
  loop do
    yield axiom 
    axiom = axiom.chars.map{|c| rules[c] }.join
  end
end

puts , 
n = 32
bool = l_system.take(n).map(&:size) == padovan.take(n)
puts