AdventOfCode-2018/common.cr

45 lines
721 B
Crystal

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