exercises for metaprogramming.rubylearning.com