def each_with_floe() # :yields: element, floe
      if block_given?
        each_with_index do |element, i|
          yield(element, Floe.new(i, size))
        end
      else
        to_enum(:each_with_floe)
      end
    end
def each_with_floe() # :yields: element, floe
      if block_given?
        each_with_index do |element, i|
          yield(element, Floe.new(i, size))
        end
      else
        to_enum(:each_with_floe)
      end
    end
For each element in the array, calls the block with two arguments: the
 element and a "floe" object.

    ary.each_with_floe do |element, floe|
      if floe.first?
          puts "#{element} is the first element"
      end
      if floe.last?
          puts "#{element} is the last element"
      end
      if floe.odd?
          puts "#{element} is an odd-numbered element"
      end
      if floe.even?
          puts "#{element} is an even-numbered element"
      end
  end

 If no block is given, an enumerator is returned instead.