# -*- coding:utf-8 -*-
class Transform:
    def transformImage(self,matrix,n):
        """
        将N×N矩阵顺时针旋转90度 - 原地旋转
        """

        n = len(matrix)

        # 分层旋转:从外层到内层
        for layer in range(n // 2):
            first = layer
            last = n - 1 - layer

            for i in range(first, last):
                offset = i - first

                # 保存上边元素
                top = matrix[first][i]

                # 左边移到上边
                matrix[first][i] = matrix[last - offset][first]

                # 下边移到左边
                matrix[last - offset][first] = matrix[last][last - offset]

                # 右边移到下边
                matrix[last][last - offset] = matrix[i][last]

                # 上边移到右边
                matrix[i][last] = top

        return matrix


def main():
    # 创建一个 N * N 阶矩阵 3*3
    n = 3
    matrix = [[i * n + 1 + j for j in range(n)] for i in range(n)]

    # 创建对象实例
    transform = Transform()

    # 调用方法获取翻转矩阵
    transform_matrix = transform.transformImage(matrix,n)

    # 打印翻转后的矩阵元素
    # for row in transform_matrix:
    #     for data in row:
    #         # print(f"{data}\t", end='')  # print("%d\t" %data) python2传统打印
    #         print("%d\t" % data, end='')
    #     print()

    for row in transform_matrix:
        for data in row:
            sys.stdout.write("%d\t" % data)  # 写入不换行
        sys.stdout.write("\n")  # 换行


if __name__ == "__main__":
    main()