advent/src/advent/util.cr

22 lines
307 B
Crystal

class Array(T)
def zip_with(other : Array(R), &block : T, R -> U) forall R, U
dest = [] of U
zip(other) do |l, r|
dest << yield l, r
end
dest
end
def union
reduce(T.new) do |l, r|
l | r
end
end
def intersect
reduce do |l, r|
l & r
end
end
end