【问题描述】
输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。
 N=3时:
    1    2    3
    8    9    4
    7    6    5
【输入形式】
从标准输入读取一个整数N。
【输出形式】
向标准输出打印结果。输出符合要求的方阵,每个数字占5个字符宽度,向右对齐,在每一行末均输出一个回车符。
【输入样例】

4

【输出样例】

    1    2    3    4
   12   13   14    5
   11   16   15    6
   10    9    8    7

 1 Dir_tuple = ('右', '下', '左', '上')
2 def dir_changer(counter, direction, lap_len):#创建转向函数
3 if counter == lap_len:#从右转向下
4 return ('下',0)
5 elif counter == (lap_len*2)-1:#从下转向左
6 return ('左',0)
7 elif counter == (lap_len*3)-2:#从左转向上
8 return ('上',0)
9 elif counter == (lap_len*4)-4:#从上转向右
10 return ('右',1)#返回缩小待填充矩阵的参数
11 else:
12 return (direction,0)#不作转向处理
13
14
15 def mof(n):
16 alist = []#创建空列表
17 blist = [0] * n
18 for i in range(n):
19 alist.append(blist[:])#创建矩阵
20 counter = 0#初始化计数器
21 lap_len = n#初始化边长
22 direction = '右'#初始化方向
23 x = y = 0#初始化坐标
24
25 for i in range(1,pow(n,2)+1):#将1到n**2填充至矩阵中
26 alist[y][x] = i#填充
27 counter += 1#计数器增加
28 direction, lap_change= dir_changer(counter, direction, lap_len)#调用转向函数
29 if lap_change == 1:#缩小待填充矩阵
30 lap_len -= 2
31 counter = 0#重置计数器
32 if direction == '右':#转向
33 x += 1
34 elif direction == '下':
35 y += 1
36 elif direction == '左':
37 x -= 1
38 elif direction == '上':
39 y -= 1
40 return alist#返回矩阵
41
42 N = int(input())
43 res_list = mof(N)
44 for i in res_list:#打印
45 for j in i:
46 print("{:5}".format(j),end='')
47 print()

Python旋转魔方阵的更多相关文章

  1. SDUST 作业10 Problem D 魔方阵

    Description 所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等.如三阶魔方阵: 8 1 6 3 5 7 4 9 2     魔方阵的规律如下: ...

  2. 基于visual Studio2013解决C语言竞赛题之0523魔方阵

     题目

  3. Project 3:N级魔方阵

    魔方阵:由n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质,称为魔方阵.而这个相等的和称为魔术数字.若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵. 目标:输入一 ...

  4. C语言复习---输出魔方阵

    一:奇魔方阵 算法: 1.第一个元素放在第一行中间一列 .下一个元素存放在当前元素的上一行.下一列. .如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下 ...

  5. 牛客网 牛客小白月赛2 A.数字方阵-反魔方阵,梁邱构造法

    天坑未补... 水一波博客,再不写博客就咸成鱼干了,只写题不写题解,过一段时间就忘了自己学过什么了. 最近重点就是把开学以来写的题补出来,没学的就滚去学会啊(= =),填一下坑... 从这篇博客开始, ...

  6. C语言---魔方阵

    魔方阵的定义:在n*n的方阵中,每一行的和=每一列的和=对角线的和.(本文中涉及的n为大于3的奇数). 例如3*3的魔方阵为: 5*5的魔方阵为: 如何写魔方阵呢? 1.数字1位于第一行的正中间2.下 ...

  7. CSS3动画之旋转魔方盒

    步骤: 1.大盒子里盛放六个子盒子代表立方体的6个面: 2.子盒子开启3d效果  transform-style:preserve-3d; 3.上下面沿X轴旋转90度,一个上移盒子一半高,一个下移盒子 ...

  8. python 旋转数组 多种解题思路

    leetcode 题目描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题. 要求使用空间复杂度为 O(1) 的 ...

  9. python 旋转数组

    #!/usr/bin/env python3 #-*-encoding:utf-8-*- l = [] u = [] q = 5 xx=[[col for col in range(q)] for r ...

随机推荐

  1. [atAGC045E]Fragile Balls

    构造一张有向图$G=([1,n],\{(a_{i},b_{i})\})$(可以有重边和自环),定义其连通块为将其看作无向图(即边无向)后分为若干个连通块 记$in_{i}$为$i$的入度(即最终盒子中 ...

  2. mysql变成类型字段varchar值更新变长或变短底层文件存储原理

    为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制.之前一直模糊不清,网上也搜不到现成的答案.经过多方资料搜集整理.写出此文供大家一起参阅.由于涉及众多非常底层的知识,我假设读者 ...

  3. 随笔:关于.net core单文件AOT编译

    .Net Core单文件发布已经很流畅了(vs已支持图形化操作发布). 但类似Go或者Graalvm JDK的完全事前编译为本地机器码的红能功能,还未发布于.net 6特性中,还处于实验室中. 另外, ...

  4. ROS机器人开发实践1->SSH远程登录要点记录

    1.有线网卡 设置 找到有线网络,点击设置,修改其中的IPv4的地址和子网掩码. 1 //地址 2 192.168.xxx.xxx 3 //子网掩码 4 255.255.255.0 点击应用 2.配置 ...

  5. NextDenovo 组装基因组

    NextDenovo 是有武汉未来组团队开发出来用于组装ONT,Pacbio, HIFI (默认参数可对60-100X数据更有效),可通过correct--assemble对其进行组装.组装后,每个碱 ...

  6. vs2019 16.8更新之后的 C++20 协程co_yield用法

    由于搜索出来的帖子,都是老版本的实验协程,很多老的代码已经失去参考性,并且很复杂,所以就自己研究了一下. 1 #include <iostream> 2 #include <coro ...

  7. leetcode刷题之数组NO.4

    1.题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数 ...

  8. aboard, abolish

    aboard board做动词有上车/船/飞机的意思,boarding就是正在上.board做名词有板的意思,车厢地板的板. a是个词根,有三种意思:1. 以某种状态或方式,如: ablaze, af ...

  9. Maven打包及场景

    场景一 对当前项目打包并指定主类. <build> <plugins> <plugin> <artifactId>maven-compiler-plug ...

  10. 【Linux】【Basis】块存储,文件存储,对象存储

    1. 块存储: 定义:这种接口通常以QEMU Driver或者Kernel Module的方式存在,这种接口需要实现Linux的Block Device的接口或者QEMU提供的Block Driver ...