from copy import copy class Sheep(): def __init__(self, x, y, i): self.x = x self.y = y self.id = i self.last_eaten = 5 class Wolf(): def __init__(self, x, y, i): self.x = x self.y = y self.id = i self.last_eaten = 10 i_w, i_s = 0, 0 Sheeps = {} Wolfs = {} #INPUT T, Y, X = (int(i) for i in input().split()) for y in range(Y): row = input() for x, char in enumerate(row): if char == ".": continue elif char == "S": Sheeps[i_s] = Sheep(x, y, i_s) i_s += 1 elif char == "W": Wolfs[i_w] = Wolf(x, y, i_w) i_w += 1 grass_row = [3 for y in range(Y)] grass = [grass_row.copy() for x in range(X)] #print(grass) for turn in range(T): #MOVE for W in Wolfs: W = Wolfs[W] W.x = (W.x + 1) % X for S in Sheeps: S = Sheeps[S] S.y = (S.y + 1) % Y #DICT SHEEP dict_sheep = {} for S in Sheeps: S = Sheeps[S] dict_sheep[(S.x, S.y)] = S #EAT SHEEP for W in Wolfs: W = Wolfs[W] if (W.x, W.y) in dict_sheep: S = dict_sheep[(W.x, W.y)] else: continue W.last_eaten = turn + 10 del Sheeps[S.id] grass[W.x][W.y] = 0 #EAT GRASS for S in Sheeps: S = Sheeps[S] if grass[S.x][S.y] and (grass[S.x][S.y] <= turn): S.last_eaten = turn grass[S.x][S.y] = turn + 3 #STARVE for W in Wolfs: W = Wolfs[W] if W.last_eaten + 10 <= turn: grass[W.x][W.y] = 0 del Wolfs[W.id] for S in Sheeps: S = Sheeps[S] if S.last_eaten + 5 <= turn: grass[S.x][S.y] = 0 del Sheeps[S.id] #OUTPUT mapa = grass #tiles for row in mapa: for i, integer in enumerate(row): if integer == 0: row[i] = "*" elif integer <= turn: row[i] = "#" else: row[i] = "." #animals for W in Wolfs: W = Wolfs[W] mapa[W.x][W.y] = "W" for S in Sheeps: S = Sheeps[S] mapa[S.x][S.y] = "S" #out #print("\n".join("".join(row) for row in mapa)) # wrong indexes for y in range (Y): for x in range(X): print(mapa[x][y], end="") print()