X Tutup
import sys # Create the image (make sure it's rectangular!) im = [list('..########################...........'), list('..#......................#...#####...'), list('..#..........########....#####...#...'), list('..#..........#......#............#...'), list('..#..........########.........####...'), list('..######......................#......'), list('.......#..#####.....###########......'), list('.......####...#######................')] HEIGHT = len(im) WIDTH = len(im[0]) def floodFill(image, x, y, newChar): oldChar = image[y][x] pixelsToCheck = [[x, y]] while len(pixelsToCheck) > 0: x, y = pixelsToCheck.pop() if oldChar == newChar or image[y][x] != oldChar: # BASE CASE continue image[y][x] = newChar # Change the character. # Uncomment to view each step: #printImage(image) # Change the neighboring characters. if y + 1 < HEIGHT and image[y + 1][x] == oldChar: # RECURSIVE CASE pixelsToCheck.append([x, y + 1]) if y - 1 >= 0 and image[y - 1][x] == oldChar: # RECURSIVE CASE pixelsToCheck.append([x, y - 1]) if x + 1 < WIDTH and image[y][x + 1] == oldChar: # RECURSIVE CASE pixelsToCheck.append([x + 1, y]) if x - 1 >= 0 and image[y][x - 1] == oldChar: # RECURSIVE CASE pixelsToCheck.append([x - 1, y]) def printImage(image): for y in range(HEIGHT): # Print each row. for x in range(WIDTH): # Print each column. sys.stdout.write(image[y][x]) sys.stdout.write('\n') sys.stdout.write('\n') printImage(im) floodFill(im, 3, 3, 'o') printImage(im)
X Tutup