Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Safe coasts solution in Uncategorized category for Safe Coasts by capback250
COORDS = ((-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1))
MOVES = ((-1, 0), (0, -1), (0, 1), (1, 0))
class Hollandec(object):
def __init__(self, data):
self.matrix = [list(x) for x in data]
self.n = len(self.matrix)
self.m = len(self.matrix[0])
self.startPoints = [(i, j) for i in range(self.n) for j in range(self.m) if self.matrix[i][j] == 'D']
for point in self.startPoints:
self.walker(point)
self.formatter()
def valid(self, x, y):
for c in COORDS:
dx, dy = x + c[0], y + c[1]
if 0 <= dx < self.n and 0 <= dy < self.m and self.matrix[dx][dy] == 'X':
return False
return True
def walker(self, start):
x, y = start
self.matrix[x][y] = 'D'
for c in MOVES:
dx, dy = x + c[0], y + c[1]
if 0 <= dx < self.n and 0 <= dy < self.m and self.matrix[dx][dy] == '.' and self.valid(dx, dy):
self.walker((dx, dy))
def formatter(self):
for i in range(self.n):
for j in range(self.m):
if self.matrix[i][j] == '.':
self.matrix[i][j] = 'S'
finish_map = lambda data: tuple((''.join(x) for x in Hollandec(data).matrix))
Feb. 18, 2016