class Array def flatten(levels=-1) levels>0?self.inject([]){|m,e|e===(Array)?e.flatten(levels-1).map{|x|m<<x}:m<<e;m}: levels==0?self:(e=self;e=e.flatten(1)until !e.any?{|x|x===Array};e) endend