Last active
August 13, 2016 21:31
-
-
Save humbroll/67f84294def81bc698d86ab22c3f1d61 to your computer and use it in GitHub Desktop.
Rotate Matrix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
# Rotate Matrix | |
# Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, | |
# write a method to rotate the image by 90 degrees. Can you do this in place? | |
import copy | |
class RotateMatrix: | |
def __init__(self, org_matrix): | |
self.org_matrix = org_matrix | |
self.size = len(self.org_matrix) | |
def rotate(self): | |
result = copy.deepcopy(self.org_matrix) | |
for i, row in enumerate(self.org_matrix): | |
for j, ele in enumerate(row): | |
x = i + (-i+j) | |
y = j + ((self.size-1)-i-j) | |
result[x][y] = ele | |
return result | |
def print_matrix(self, matrix): | |
return "\n".join([str(m) for m in matrix]) | |
if __name__ == '__main__': | |
matrix = \ | |
[ | |
[1, 2, 3], | |
[4, 5, 6], | |
[7, 8, 9] | |
] | |
matrix_2 = \ | |
[ | |
[ 1, 2, 3, 4], | |
[ 5, 6, 7, 8], | |
[ 9,10,11,12], | |
[13,14,15,16], | |
] | |
matrix_3 = \ | |
[ | |
[ 1, 2, 3, 4, 5], | |
[ 6, 7, 8, 9,10], | |
[11,12,13,14,15], | |
[16,17,18,19,20], | |
[21,22,23,24,25], | |
] | |
rotate_matrix = RotateMatrix(matrix) | |
rotated_matrix = rotate_matrix.rotate() | |
print "INPUT" | |
print rotate_matrix.print_matrix(matrix) | |
print "OUTPUT" | |
print rotate_matrix.print_matrix(rotated_matrix) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The other solutions