回旋矩形Python实现

# coding=utf-8
"""
# matrix.py
# 矩阵类
# Created on: 2015/4/9
# Author: Woolen Sky
"""

import sys


class Matrix:
    """矩阵类"""

    matrix = []
    row = 0
    column = 0

    def __init__(self, row_column=0):
        """
        使用行列数初始化矩阵,行列数相同
        :param row_column 行和列数
        :type row_column: int
        :return nothing
        """
        self.matrix = []
        self.row = row_column
        self.column = row_column
        for i in range(0, row_column):
            new_arr = [0] * row_column
            self.matrix.append(new_arr)
        return

    def init_with_row_and_column(self, row, column):
        """
        使用行列数初始化矩阵
        :param row: 行数
        :param column: 列数
        :type row int
        :type column int
        :return: nothing
        """
        self.matrix = []
        self.row = row
        self.column = column
        for i in range(0, row):
            new_arr = [0] * column
            self.matrix.append(new_arr)
        return

    def display(self):
        """
        输出矩阵
        :return:nothing
        """
        max_len = len(str(self.row * self.column - 1))
        format_str = "%" + str(max_len) + "r "
        for i in self.matrix:
            for j in i:
                sys.stdout.writelines(format_str % j)
            print("")
        return

    def round_matrix(self, length, start_line=0, start_column=0, num=0):
        """
        调用函数请确保self.row == self.column
        :type length:int
        :type start_column:int
        :type start_line:int
        :type num:int
        :param length:行列长度,确保一样
        :param start_line:初始行(0)
        :param start_column:初始列(0)
        :param num:起始数字(0)
        :return:nothing
        """
        if length == 0:
            return
        elif length == 1:
            self.matrix[start_line][start_column] = num
            num += 1
            return
        for column in range(0, length - 1):
            self.matrix[start_line][start_column + column] = num
            num += 1
        for line in range(0, length - 1):
            self.matrix[start_line + line][start_column + length - 1] = num
            num += 1
        for column in range(0, length - 1):
            self.matrix[start_line + length - 1][start_column + length - 1 - column] = num
            num += 1
        for line in range(0, length - 1):
            self.matrix[start_line + length - 1 - line][start_column] = num
            num += 1
        self.round_matrix(length - 2, start_line + 1, start_column + 1, num)
        return

接下来是主程序

# coding=utf-8
"""
# round_matrix.py
#
# Created on: 2015/4/9
# Author: Woolen Sky
"""

import matrix

m = matrix.Matrix(10)
m.round_matrix(m.row)
m.display()

运行结果如下

162352_xbbL_2359096.png

转载于:https://my.oschina.net/WoolenSky/blog/489522

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值