In [15]:
def make_board(board):
new_board = []
for i in board:
i = i[i.index("“")+1:i.index("”")]
new_board.append(i)
return new_board
def make_scanner(board):
scanner = []
ingredient = []
for i in board:
for j in i:
ingredient.append(j)
ingredient = set(ingredient)
for i in ingredient:
scanner.append([[i,i],[i,i]])
return scanner
def make_location(scanner,new_board):
location = []
for i in range(n):
for j in range(m):
if i+1<=m and j+1<=n :
try:
for k in scanner:
if k == [[new_board[i][j],new_board[i][j+1]],[new_board[i+1][j],new_board[i+1][j+1]]]:
location.append((i,j))
location.append((i,j+1))
location.append((i+1,j))
location.append((i+1,j+1))
except:
IndexError
location = [list(i) for i in set(location)]
return location
def delete_block(new_board,location):
for i,j in location:
new_board[i][j] = "0"
zipped = [list(i) for i in list(zip(*new_board))]
zero_range = []
for k in range(len(zipped)):
if "0" in zipped[k]:
zero_range.append([k,zipped[k].index("0"),zipped[k].count("0")])
else:
pass
for i in zero_range:
zipped[i[0]] = zipped[i[0]][i[1]:i[1]+i[2]] + zipped[i[0]][:i[1]]+ zipped[i[0]][i[1]+i[2]:]
new_board = [list(i) for i in list(zip(*zipped))]
return new_board
def main():
m,n = map(int,input().split( ))
board = [list(i) for i in map(str,input().split(","))]
new_board = make_board(board)
scanner = make_scanner(new_board)
location = make_location(scanner,new_board)
score = []
while len(location) != 0:
new_board = delete_block(new_board,location)
score.append(len(location))
del[location[:]]
location = make_location(scanner,new_board)
return(sum(score))
In [19]:
print(main())
In [20]:
print(main())