螺旋数字的python实现
螺旋数字的算法简单实现。
示例 5
01 02 03 04 05
16 17 18 19 06
15 24 25 20 07
14 23 22 21 08
13 12 11 10 09
通过观察,外部数字进行环绕一圈后向内收拢。

从程序出发,只要递归处理好4条边即可。

同时为了避免顶点重复赋值,最后一个点让后续的边处理。
说明:处理暂时存储在一个list对象中。
实现代码:
def getlocIndex(l_x,l_y,steps):
return l_x + l_y*steps def increaseSeedAndSteps(curSeed,cur_steps):
return (curSeed +1,cur_steps+1) def setTargetItem(targetlst,l_cur_x,l_cur_y,steps,curSeed):
loc_index = getlocIndex(l_cur_x, l_cur_y, steps)
targetlst[loc_index] = curSeed def calc(targetlst,seed,l_x,l_y,nextsteps,steps): current_seed = seed
loop_steps = nextsteps-1 if( nextsteps < 1 ):
setTargetItem(targetlst, l_x, l_y,steps, current_seed)
return each_steps = 0
while(each_steps <= loop_steps):
setTargetItem(targetlst, l_x+each_steps, l_y,steps, current_seed)
current_seed,each_steps = increaseSeedAndSteps(current_seed ,each_steps) each_steps = 0
while(each_steps <= loop_steps):
setTargetItem(targetlst, l_x+nextsteps, (l_y+each_steps), steps, current_seed)
current_seed,each_steps = increaseSeedAndSteps(current_seed ,each_steps) each_steps = 0
while(each_steps <= loop_steps):
setTargetItem(targetlst, l_x+nextsteps-each_steps, l_y+nextsteps, steps, current_seed)
current_seed,each_steps = increaseSeedAndSteps(current_seed ,each_steps) each_steps = 0
while(each_steps <= loop_steps):
setTargetItem(targetlst, l_x, l_y+nextsteps-each_steps, steps, current_seed)
current_seed,each_steps = increaseSeedAndSteps(current_seed ,each_steps) if(nextsteps-2 >= 0):
calc(targetlst,current_seed,l_x+1,l_y+1,nextsteps-2,steps)
测试代码:
def outputResult(targetlst,steps):
outBuffer = ''
for rowIndex in range(0, steps* steps):
if(rowIndex % steps == 0 and len(outBuffer) >0):
print('%s\n' % (outBuffer))
outBuffer = ''
outBuffer = outBuffer + '%02d ' %(targetlst[rowIndex])
print('%s\n' % (outBuffer)) import traceback
try:
steps =5 targetlst = list()
[ targetlst.append(0) for nTry in range(0,steps* steps)] calc(targetlst, 1,0,0,steps-1,steps)
outputResult(targetlst, steps) except Exception as exc:
print("app catch: %s\n" % ( exc));
info = traceback.format_exc()
print(info)
print("done")
螺旋数字的python实现的更多相关文章
- 猜数字游戏-python
题目: 用python写一个猜数字的游戏,游戏规则如下: 1.由一个人随机写一个整数1-99(如:21) 2.一群小伙伴轮流猜数字,如第一个人猜一个数(如:48),则缩小范围至(1-48) 3.如第二 ...
- 一起来刷《剑指Offer》-- 题目一:找出数组中重复的数字(Python多种方法实现)
数组中重复的数字 最近在复习算法和数据结构(基于Python实现),然后看了Python的各种"序列"--比如列表List.元组Tuple和字符串String,后期会写一篇博客介绍 ...
- KNN识别图像上的数字及python实现
领导让我每天手工录入BI系统中的数据并判断数据是否存在异常,若有异常点,则检测是系统问题还是业务问题.为了解放双手,我决定写个程序完成每天录入管理驾驶舱数据的任务.首先用按键精灵录了一套脚本把系统中的 ...
- 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字(python)(原创)
背景: 电话面试&手撕代码 2019.03.22 Mufasa 问题: 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字 条件: 这串数字是有序数 解决方法: 核心代码只有 ...
- Leetcode 268.缺失数字 By Python
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2 ...
- 猜数字问题 python
猜数字问题,要求如下: ① 随机生成一个整数 ② 猜一个数字并输入 ③ 判断是大是小,直到猜正确 ④ 判断时间提示:需要用time模块.random模块该题目不需要创建函数 import random ...
- 剑指offer-数组中重复的数字-数组-python
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- 剑指offer-数组中只出现一次的数字-数组-python
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. # -*- coding:utf-8 -*- class Solution: # 返回[a, ...
- leetcode 374. 猜数字大小(python)
我们正在玩一个猜数字游戏. 游戏规则如下:我从 1 到 n 选择一个数字. 你需要猜我选择了哪个数字.每次你猜错了,我会告诉你这个数字是大了还是小了.你调用一个预先定义好的接口 guess(int n ...
随机推荐
- 关于return
return ; 相当于执行完跳转url后停止,return无返回值仅作停止作用,是指停止当前方法,是方法的终点 return null ; 代表引用类型的空值
- web安全之跨站请求伪造
CSRF(Cross-site request forgery),中文名称:跨站请求伪造.因为这个不是用户真正想发出的请求,这就是所谓的请求伪造;因为这些请求也是可以从第三方网站提交的,所以前缀跨站二 ...
- 【旧文章搬运】PE感染逆向之修复(Serverx.exe专杀工具出炉手记)
原文发表于百度空间,2008-10-4看雪论坛发表地址:https://bbs.pediy.com/thread-73948.htm================================== ...
- k8s-高级调度方式-二十一
两类: 节点选择器:nodeSelector(给node打上标签,pod通过标签预选节点),nodeName 节点亲和调度:nodeAffinity 1.节点选择器(nodeSelector,node ...
- E20170414-ms
collapse v/n 奔溃,垮台 constraint n 约束,限制 adaptive adj 适应的; 有适应能力的; exhausitive adj. 详尽的; store n 商店,仓 ...
- ARC和MRC混合使用
在一些项目中尤其是做迭代的项目经常会出现MRC的项目,但是我们习惯了ARC环境,反之也是一样.这是我们不必去修改代码去掉release之类的,按照如下方案去做就可以了. 项目 -> Build ...
- 51nod1163【贪心】
思路: 我们可以说: ①:价值大的不管时间早晚,都可以取,时间较晚的,本身就可以取,那么肯定是大的在前面取,但是在最前面那也是不对的,那么条件就是在规定的时间内,大的就是取了,因为他大,OK. ②:只 ...
- hdoj1097
好久没有遇到过这样的题,似乎记得以前完全就是靠规律啊什么的.... 然后刚刚看到,这不就是快速幂取膜就好了嘛- #include <stdio.h> #include <string ...
- 初识Sklearn-IrisData训练与预测
笔记:机器学习入门---鸢尾花分类 Sklearn 本身就有很多数据库,可以用来练习. 以 Iris 的数据为例,这种花有四个属性,花瓣的长宽,茎的长宽,根据这些属性把花分为三类:山鸢尾花Setosa ...
- Docker部署Tomcat,Nginx,Redis应用
一.tomcat部署 1.拉取tomcat镜像 docker pull tomcat:7-jre7 2创建tomcat容器 创建容器用于部署单点登录系统(CAS) -p表示地址映射 docker r ...