Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
OOP solution in Clear category for Painting Wall by Leonix
def checkio(required, operations):
wall = Wall()
for i, (f, t) in enumerate(operations):
wall.paint(f, t)
if wall.count_painted() >= required:
return i+1
return -1
class Wall(object):
def __init__(self):
self.painted = [] # store non-intersecting painted intervals
def paint(self, f, t):
new_painted = []
for f2, t2 in self.painted:
if t >= f2 if f < f2 else t2 >= f:
f, t = min(f, f2), max(t, t2) # merge intervals if intersect
else:
new_painted.append([f2, t2]) # otherwise keep existing
self.painted = new_painted + [[f, t]]
def count_painted(self):
return sum(t + 1 - f for f, t in self.painted)
July 19, 2019
Comments: