23 lines
		
	
	
	
		
			563 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
	
		
			563 B
		
	
	
	
		
			Python
		
	
	
	
	
	
 | 
						|
def merge(xs):
 | 
						|
    xs.sort()
 | 
						|
    result = xs[0:1]
 | 
						|
    for a, b in xs[1:]:
 | 
						|
        y, z = result[-1]
 | 
						|
        if a <= z:
 | 
						|
            result[-1] = (y, max(b, z))
 | 
						|
        else:
 | 
						|
            result.append((a, b))
 | 
						|
    return result
 | 
						|
 | 
						|
inputs = [([(0,1),(3,5),(4,8),(10,12),(9,10)], [(0,1),(3,8),(9,12)]),
 | 
						|
          ([(1,2),(2,3)], [(1,3)]),
 | 
						|
          ([(1,5),(2,3)], [(1,5)]),
 | 
						|
          ([(1,10),(2,6),(3,5),(7,9)], [(1,10)]),
 | 
						|
          ]
 | 
						|
for x, expected in inputs:
 | 
						|
    result = merge(x)
 | 
						|
    print(x)
 | 
						|
    print(result)
 | 
						|
    assert result == expected
 | 
						|
    print("Success!")
 |