Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Painting Wall solution in Clear category for Painting Wall by vinc
def insert_part_in_painted(painted, new_part):
""" insert new_part in the list of painted non-overlapped parts
(in place)
"""
new_left, new_right = new_part
for left, right in painted[:]:
if left <= new_left and new_right <= right:
return
elif new_right < left or new_left > right:
continue
new_left = min(left, new_left)
new_right = max(right, new_right)
painted.remove([left, right])
painted.append([new_left, new_right])
def checkio(required, operations):
""" return minimum number of operations for painting the wall
required length
"""
painted_parts = [] # list of painted non-overlapped parts
for i, operation in enumerate(operations):
insert_part_in_painted(painted_parts, operation)
length = sum((right-left+1) for left,right in painted_parts)
if length >= required:
return i + 1
return -1
Aug. 16, 2014