aoc

My solutions for the Advent of Code
git clone https://git.tronto.net/aoc
Download | Log | Files | Refs | README

b.py (480B)


      1 import fileinput
      2 
      3 def overlap(r1, r2):
      4 	return min(r1[1], r2[1]) >= max(r1[0], r2[0])
      5 
      6 def fuse(r1, r2):
      7 	return (min(r1[0], r2[0]), max(r1[1], r2[1]))
      8 
      9 ranges = []
     10 with fileinput.input() as lines:
     11 	for line in lines:
     12 		if line == '\n':
     13 			break
     14 		i = line.find('-')
     15 		ranges.append((int(line[:i]), int(line[i+1:-1])))
     16 
     17 s = set()
     18 for r in ranges:
     19 	c = r
     20 	for rr in list(s):
     21 		if overlap(c, rr):
     22 			c = fuse(c, rr)
     23 			s.remove(rr)
     24 	s.add(c)
     25 
     26 print(sum(r[1] - r[0] + 1 for r in s))