module Enumerable(T) def count_each(others) count_map = {} of T => Int32 each do |other| count_map[other] = (count_map[other]? || 0) + 1 end return count_map end end class Rectangle def initialize(@x : Int32, @y : Int32, @width : Int32, @height : Int32) end def each_coord(&block) (@x...(@x + @width)).each do |x| (@y...(@y + @height)).each do |y| yield x, y end end end end class String def select(&block) String.build do |s| each_char do |c| s << c if yield c end end end def select!(&block) i = 0 s = size while i < s if yield [i] i += 1 else s -= 1 end end end end