Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
- with open('mooyomooyo.in', 'r') as file:
- n, k = map(int, file.readline().split())
- board = []
- for i in range(n):
- row = file.readline().strip()
- board.append([int(j) for j in row])
- v = len(board[0]) # v is the variable for columns
- current_tiles = 0
- def floodfill(row, col):
- global current_tiles
- current_tiles += 1
- value = board[row][col]
- visited[row][col] = True
- if current_tiles >= k:
- board[row][col] = 0
- for direction in directions:
- nrow, ncol = row+direction[0], col+direction[1] # new row, new col
- if nrow not in range(n):
- continue
- if ncol not in range(v):
- continue
- if value != board[nrow][ncol]:
- continue
- if visited[nrow][ncol] and current_tiles < k:
- continue
- floodfill(nrow, ncol)
- def simulate_gravity():
- for j in range(v):
- column = [board[i][j] for i in range(n) if board[i][j] != 0]
- column = [0 for i in range(n-len(column))] + column
- for i in range(n):
- board[i][j] = column[i]
- while True:
- deletion_occurred = False
- for i in range(n):
- for j in range(v):
- if board[i][j] != 0:
- current_tiles = 0
- visited = [[False for j in range(v)] for i in range(n)]
- floodfill(i, j)
- if current_tiles >= k:
- deletion_occurred = True
- if deletion_occurred:
- simulate_gravity()
- else:
- break
- with open('mooyomooyo.out', 'w') as file:
- for row in board:
- print(*row, sep='', file=file)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement