You are viewing a single comment's thread. Return to all comments →
I took a similar approach. Here is my Python 2 solution:
def build_grid(m, n, walls): grid = [[0 for j in xrange(n)] for i in xrange(m)] for w in xrange(len(walls)): wall = walls[w] wall_i = 0 for i in xrange(w, m - w): grid[i][w] = wall[wall_i] wall_i += 1 for j in xrange(1 + w, n - w): grid[-(1 + w)][j] = wall[wall_i] wall_i += 1 for i in xrange(-2 - w, -m - 1 + w, -1): grid[i][-(1 + w)] = wall[wall_i] wall_i += 1 for j in xrange(-2 - w, -n + w, -1): grid[w][j] = wall[wall_i] wall_i += 1 return '\n'.join(' '.join(map(str, row)) for row in grid) def get_rotated_grid(): m, n, r = map(int, raw_input().split()) grid = [map(int, raw_input().split()) for i in xrange(m)] walls = get_walls(m, n, grid) rotate_walls(r, walls) return build_grid(m, n, walls) def get_walls(m, n, grid): walls = [] while any(grid): wall = [] wall.extend(grid[i][0] for i in xrange(m)) wall.extend(grid[-1][j] for j in xrange(1, n)) wall.extend(grid[i][-1] for i in xrange(-2, -m - 1, -1)) wall.extend(grid[0][j] for j in xrange(-2, -n, -1)) walls.append(wall) grid = [grid[i][1:-1] for i in xrange(1, len(grid) - 1)] m -= 2 n -= 2 return walls def rotate_walls(r, walls): for i in xrange(len(walls)): wall = walls[i] wall_length = len(wall) rotations = r % wall_length walls[i] = wall[-rotations:] + wall[:-rotations]
The entrypoint is get_rotated_grid()
get_rotated_grid()
Seems like cookies are disabled on this browser, please enable them to open this website
Matrix Layer Rotation
You are viewing a single comment's thread. Return to all comments →
I took a similar approach. Here is my Python 2 solution:
The entrypoint is
get_rotated_grid()