code: def tableize(rows, &block)
        rows = rows.map(&block) if block
        widths = max_length_of_each_column(rows)
        rows.map do |row|
          row.zip(widths).map { |value, width| value.ljust(width) }.join(" ")
        end
      end
docs: Given a two-dimensional Array of strings representing a table of data,
   translate each row into a single string by joining the values with
   whitespace such that all the columns are nicely aligned.
  
   If a block is given, map the rows through the block first. These two
   usages are equivalent:
  
     tableize(rows.map(&something))
     tableize(rows, &something)
  
   Returns a one-dimensional Array of strings, each representing a formatted
   row of the resulting table.