python3 题解(15)螺旋填充方阵

螺旋填充方阵【问题】用1…n2n^2n2的自然数顺时针方向螺旋填充一个n阶方阵。当 n = 7 的时候,如下:先做一个空的二维数组代表方阵。始终记录当前的位置,当前填充的数字,当前的填充方向。当遇到阻力(出界或者撞上了已填的数字)以后,改变填充的方向。from collections import namedtuplePosi = namedtuple('Posi', 'row ...
摘要由CSDN通过智能技术生成

螺旋填充方阵

【问题】用1… n 2 n^2 n2的自然数顺时针方向螺旋填充一个n阶方阵。
当 n = 7 的时候,如下:
在这里插入图片描述
先做一个空的二维数组代表方阵。
始终记录当前的位置,当前填充的数字,当前的填充方向。
当遇到阻力(出界或者撞上了已填的数字)以后,改变填充的方向。

from collections import namedtuple

Posi = namedtuple('Posi', 'row col')  # 位置包含行号和列号
Dire = namedtuple('Dire', 'dr dc')    # 移动方向包含行的变化、列的变化

def next_dire(x):
	return {
   
		Dire(0,1): Dire(1,0),
		Dire(1,0): Dire(0,-1),
		Dire(0,-1): Dire(-1,0),
		Dire(-1,0): Dire(0,1)
	}[x]

def next_posi(p, d):
	return Posi(p.row + d.dr, p.col + d.dc)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值