The solutions to advent of code puzzles, year 2018.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

#### 38 lines 880 B Raw Permalink Blame History

 ```require "./common.cr" ``` ``` ``` ```lines = File.read("day3_input").split("\n") ``` ```lines.pop ``` ``` ``` ```REGEX = /#([0-9]+) @ ([0-9]+),([0-9]+): ([0-9]+)x([0-9]+)/ ``` ``` ``` ```claims = {} of Int32 => Rectangle ``` ```lines.each do |line| ``` ``` match = line.match(REGEX).not_nil! ``` ``` claim = match[1].to_i32 ``` ``` x = match[2].to_i32 ``` ``` y = match[3].to_i32 ``` ``` width = match[4].to_i32 ``` ``` height = match[5].to_i32 ``` ``` claims[claim] = Rectangle.new(x, y, width, height) ``` ```end ``` ``` ``` ```claimed_coords = {} of Tuple(Int32, Int32) => Int32 ``` ```claims.values.each do |claim| ``` ``` claim.each_coord do |x, y| ``` ``` coord = {x, y} ``` ``` claimed_coords[coord] = (claimed_coords[coord]? || 0) + 1 ``` ``` end ``` ```end ``` ``` ``` ```puts "Overlapping: #{claimed_coords.values.count &.>(1)}" ``` ``` ``` ```claims.each do |k, v| ``` ``` count_overlapped = 0 ``` ``` v.each_coord do |x, y| ``` ``` count_overlapped += 1 if claimed_coords[{x, y}] > 1 ``` ``` end ``` ``` if count_overlapped == 0 ``` ``` puts "No overlaps: #{k}" ``` ``` exit ``` ``` end ``` ```end ``` ``` ```