|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
×
题目要求图左的n*n字符矩阵转换到图右的矩阵
我现在的思路是把做图按顺序提取出来先
思路 提取坐标有以下情况
极限行
首行 奇 首行 偶
尾行 奇 尾行 偶
极限列
基 首列 偶 首列
基 尾列 偶 尾列
奇奇 右上
奇偶 左下
偶奇 左下
偶偶 右上
我分别定义了函数,但程序一直没有移动坐标提取 得出的一直是首位字母T,看一个下午没查到出错处
请高手可以的话纠正以下我这段代码,或者提供其他解题思路
- class mov: #移动操作 右 下 右上 左下
- '移动操作'
- def right(x,y):
- return x,y+1
- def down(x,y):
- return x+1,y
- def rup(x,y):
- return x-1,y+1
- def ldown(x,y):
- return x+1,y-1
- #边缘判断+处理
- def limit(x,y):
- '极限行'
- #0 0判断
- if x==0 and y ==0:
- return x,y+1
- if x != 0 or x != (n-1) or y != 0 or y != (n-1):
- print(x,y,'false')
- return False
-
-
- if x == 0 or x == (n-1):
- if x == 0 and y%2 !=0: #首行 奇列
- return mov.right(x,y)
- elif x ==0 and y%2 ==0: #首行 偶列
- return mov.ldown(x,y)
- elif x == (n-1) and y%2 != 0: #尾行 奇列 右上
- return mov.rup(x,y)
- elif x ==(n-1) and y%2 ==0: #尾行 偶列 右
- return mov.right(x,y)
- #极限列
- elif y == 0 or y == (n-1):
- if y ==0 and x %2 != 0: #首列 奇行 右上
- return mov.rup(x,y)
- elif y == (n-1) and x %2 ==0:#首列 偶行 下
- return mov.down(x,y)
- elif y == (n-1) and x%2 != 0:#尾列 基行 下
- return mov.down(x,y)
- elif y== (n-1) and x %2 == 0:#尾列 偶行 左下
- return mov.ldown(x,y)
- else:
- return False
- #中部定位
- def ways(x,y):
- if (x %2 !=0 and y %2 != 0) or (x%2==0 and y%2==0) :#奇行奇列 偶行偶列
- return mov.rup(x,y)
- elif (x%2 != 0 and y%2 ==0) or (x%2==0 and y%2 !=0): #奇行偶列 或者 偶行奇列
- return mov.ldown(x,y)
- lst = [['T', 'H', 'S', 'A', 'D'], ['I', 'I', 'V', 'O', 'P'], ['S', 'E', 'O', 'O', 'H'], ['R', 'G', 'E', 'T', 'I'], ['Y', 'M', 'I', 'N', 'K']]
- n= 5
- row =0
- col = 0
- for i in range(25):
- if limit(row,col):
- row,col == limit(row,col)[0],limit(row,col)[1]
- #print('当前rc',row,col)
- print(lst[row][col],end="")
- else:
- row,col == ways(row,col)[0],ways(row,col)[1]
- print(lst[row][col],end="")
复制代码 |
|