用python做算法_自己用python写的螺旋矩阵生成算法
自己用python写的螺旋矩阵生成算法
如果输入6,可以生成如下矩阵:
1 20 19 18 17 16
2 21 32 31 30 15
3 22 33 36 29 14
4 23 34 35 28 13
5 24 25 26 27 12
6 7 8 9 10 11
代码如下:
import string
import sys
def outputcirclenumber(m):
x=0
y=0
edgelayer = 0
change_direction_count = 0
clockwise =1
direction =1 #1,2,3,4
outputNum =1
odd = m%2
a = []
for j in range(0,m):
b = [0 for i in range(0,m)]
a.append(b)
#check if the current point is in the corner now,if it is ,change the direction
def checkatcorner(x,y,m,edgelayer,direction):
if x+y<1:
return 0
if x==edgelayer and y==edgelayer+1 and direction==4:
return 1
if x==m-1-edgelayer and y==edgelayer:
return 2
if x==m-1-edgelayer and y==m-1-edgelayer:
return 3
if x==edgelayer and y==m-1-edgelayer :
return 4
return 0
while True:
if checkatcorner(x,y,m,edgelayer,direction):
direction = checkatcorner(x,y,m,edgelayer,direction)
change_direction_count = change_direction_count +1
if not change_direction_count%4 and change_direction_count >0:
edgelayer = edgelayer+1
if x==0 and y==0:
a[x][y] = outputNum
outputNum = outputNum +1
if direction ==1:
x = x+1
a[x][y] = outputNum
if direction ==2:
y = y+1
a[x][y] = outputNum
if direction ==3:
x = x-1;
a[x][y] = outputNum
if direction ==4:
y = y-1;
a[x][y] = outputNum
outputNum = outputNum +1
if odd and x == y and x==m/2 and y==m/2:
break
if not odd and x==m/2-1 and y==m/2:
break
return a
#below is the main functions
if __name__ != "__main__":
print "outside call error"
sys.exit()
number = raw_input("please input the number you want to generate circle matrix:")
try:
num = int(number)
except:
print "\n\nNumber type error\n\n"
if num<=1:
print "number must greater than 1!!!"
sys.exit()
result = outputcirclenumber(num)
for i in result:
for j in i:
print string.rjust(str(j),len(str(num*num)),' '),
©著作权归作者所有:来自51CTO博客作者flandycheng的原创作品,如需转载,请注明出处,否则将追究法律责任
flandycheng
187篇文章,119W+人气,2粉丝
用python做算法_自己用python写的螺旋矩阵生成算法相关推荐
- python做交易软件_我用Python做了个量化交易工具!
量化交易是指借助现代统计学和数学的方法,利用计算机技术进行投资交易的方式. 对于从未接触过量化的人来说,想要了解量化到底是做什么的,关键掌握四部份的内容:Python基础知识.金融知识.技术指标.量化 ...
- python做单元测试_如何使用python做单元测试?
很多编程小白不太理解单元测试,为什么要进行单元测试呢?很简单,主要是提高代码的正确,同时确保重构不出错.接下来我们一起学习怎么用python做单元测试吧. python内置了一个unittest,但是 ...
- 用python做数据挖掘_你用 Python 做过什么有趣的数据挖掘项目?
有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」 我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验.所以想知道 ...
- java做爬虫和python做爬虫_为什么常用Python,Java做爬虫,而不是C#C++等?
我写了爬虫在c#和java.区别不大,原则是充分利用正则表达式.这只是一个平台的问题.后来我才知道,许多爬虫是用python编写的.因为我不熟悉python目前,我不知道为什么.百度给了以下结果:1) ...
- 如何使用python做图_如何使用python做动图
python可以做动图吗 ImageMagick 是一套功能强大.稳定而且开源的工具集和开发包,可以用来读.写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,D ...
- 用python做头像_如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 如何用python做表_如何使用Python中的Tkinter制作钟表?
这就不得不说,python真的是一个非常神奇的编程语言,小编在浏览一些知识资料时候,根据内容,整合了解后,发现居然可以制作钟表,立刻来了兴趣,于是根据内容编写了以下代码,大家如果感兴趣的话,也可以来看 ...
- python做小波分析_浅谈Python小波分析库Pywavelets的一点使用心得
本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下: # -*- coding: utf-8 -*- import numpy as np import math import ...
- 如何用python做计算_如何运用Python编写简易计算器?
分3步吧使用Qt-Designer 设计UI 将UI文件转换成py文件 实现加减乘除的业务逻辑 效果如下: 附代码: CalculatorUI.py # -*- coding: utf-8 -*- # ...
最新文章
- 「二分查找」之我见!今天刷一道leetcode算法!
- 详解Scala与Java的互动
- nginx配置反向代理解决前后端分离跨域问题
- Java字节码指令简介
- Effective C++ 条款03:尽可能使用const
- js判断ipad还是安卓_JS判断客户端是否是iOS或者Android
- php 单一职责原则,Laravel深入学习8 - 单一责任原则
- Javascript的数组操作(笔记)
- 日历控件,可运行在XHTML1.0下
- 深度学习笔记_卷积神经网络参数计算
- quartus-ModeliSm仿真教程
- 华三基础命令(单臂,超级vlan,远程,聚合)
- 中线提取算法_一种应用VisualGraph算法提取道路中线的方法与流程
- 使用antV-G6在angualr中画树形关系图
- 什么是开关量,I/O区分详细解答
- 【Linux】进程概念 —— 进程状态
- Spring Cloud Stream教程(二)主要概念
- 软件测试技术 中医体质判定表,中医体质分类与判定自测表(中华中医药学会标准)...
- python用于计算和数据处理的包有哪些_chapter3-2 常用数据处理包Numpy整理2
- MAVROS started. MY ID 1.240, TARGET ID 1.1
热门文章
- Udacity机器人软件工程师课程笔记(二十八) - 卷积神经网络实例 - Fashion-MNIST数据集
- 【讲人话】Angular如何通过@ViewChildren获取实时渲染的动态DOM节点元素(@ViewChild只能获取静态的固定DOM节点)
- 【禅模式】如何进入极度专注的心流状态,让前端开发能力发挥到最大?设置VSCode禅模式快捷键Alt+F切换全屏,适合演示代码使用
- elementUI 写一个表头列名、表体单元格样式、翻页器相对较为动态的表格el-table
- 【最简洁】一句CSS3代码实现不规则自定义背景图拼接样式,多用于异形弹窗背景图
- 重装电脑后遇到的问题,其他设备,未知设备
- linux进程间通信:消息队列实现双端通信
- 如何判断CPU、内存、磁盘的性能瓶颈?
- 4566: [Haoi2016]找相同字符 SAM
- Linux 环境变量配置