git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			918 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			918 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from collection import deque
 | |
| 
 | |
| def fill(point, canvas, color):
 | |
|     if x not in canvas:
 | |
|         return
 | |
|     elif y not in canvas[x]:
 | |
|         return
 | |
| 
 | |
|     x, y = point
 | |
|     if canvas[y][x] == color:
 | |
|         return
 | |
|     canvas[y][x] = color
 | |
|     fill((x + 1, y), canvas, color)
 | |
|     fill((x - 1, y), canvas, color)
 | |
|     fill((x, y + 1), canvas, color)
 | |
|     fill((x, y - 1), canvas, color)
 | |
| 
 | |
| def fill_bfs(point, canvas, color):
 | |
|     x, y = point
 | |
|     if x not in canvas:
 | |
|         return None
 | |
|     if y not in canvas[x]:
 | |
|         return None
 | |
|     xs = deque()
 | |
|     xs.append((x, y))
 | |
|     while xs:
 | |
|         x, y = xs.popleft()
 | |
|         canvas[y][x] = color
 | |
|         for x2, y2 in [(x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1)]:
 | |
|             if x2 not in canvas:
 | |
|                 continue
 | |
|             elif y2 not in canvas[x2]:
 | |
|                 continue
 | |
|             if canvas[y2][x2] != color:
 | |
|                 xs.append((x2, y2))
 | |
|     return None
 |