We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
defmatrixRotation(matrix,r):m=len(matrix)n=len(matrix[1])m2=[([0]*n)foriinrange(m)]number_of_rings=min(int(m/2),int(n/2))m_rings=[]n_rings=[]#creating a list of ring indexesforiinrange(number_of_rings):elements_in_a_ring=2*n+2*(m-2)m_arr=[]n_arr=[]forjinrange(n):m_arr.append(i)n_arr.append(n-j-1+i)forjinrange(m-1):m_arr.append(j+1+i)n_arr.append(i)forjinrange(n-1):m_arr.append(m-1+i)n_arr.append(j+1+i)forjinrange(m-2):m_arr.append(m-j-2+i)n_arr.append(n-1+i)#Rotating index ring by rm_arr=[m_arr[(i-r)%len(m_arr)]fori,xinenumerate(m_arr)]n_arr=[n_arr[(i-r)%len(n_arr)]fori,xinenumerate(n_arr)]m_rings.append(m_arr)n_rings.append(n_arr)m-=2n-=2# print(f"m rings after: {m_rings}")# print(f"n rings after : {n_rings}")m=len(matrix)n=len(matrix[1])matr2=[([0]*n)foriinrange(m)]#assign the data to the new matrix (matr2), from the data matrix (matrix) using the rotated data indexes foriinrange(number_of_rings):elements_in_a_ring=2*n+2*(m-2)forjinrange(n):matr2[i][n-j-1+i]=matrix[m_rings[i][j]][n_rings[i][j]]forjinrange(m-1):matr2[j+1+i][i]=matrix[m_rings[i][j+n]][n_rings[i][j+n]]forjinrange(n-1):matr2[m-1+i][j+1+i]=matrix[m_rings[i][m+n-1+j]][n_rings[i][m+n-1+j]]forjinrange(m-2):m_arr.append(m-j-2+i)n_arr.append(n-1+i)matr2[m-j-2+i][n-1+i]=matrix[m_rings[i][m+(2*n)-2+j]][n_rings[i][m+(2*n)-2+j]]m-=2n-=2# print(f"m matrix 1: {matrix}")# print(f"m matrix 2: {matr2}")m=len(matrix)foriinrange(m):print(*matr2[i])
Cookie support is required to access HackerRank
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 →
Python 3 code