如何解决旋转一个正方形
所以我要构建的是一个程序,它需要一个 3x3 的正方形并根据指令旋转它。例如,如果我有 3x3 正方形
0 5 2
7 8 4
1 6 3
旋转是这些
U 2
D 2
L 1
D 2
然后我旋转它:在第二列上
0 5 4
7 8 3
1 6 2
二楼
0 5 2
7 8 4
1 6 3
在第一行左边 - 不确定是不是右边
0 5 2
8 4 7
1 6 3
在第二行下方
0 5 3
8 4 2
1 6 7
最终轮换应该是
0 5 3
8 4 2
1 6 7
下面是我的程序,我设法运行了文件并生成了一个 3x3,但我不知道如何移动正方形,如果有人可以通过提供有关我如何开始移动的指针来帮助这一点,非常感谢。
def readfile(x):
list=[]
file= open(x)
count=0
maxcount=0
while True:
line = file.readline()
if count<3:
line=line.rstrip('\n').split(' ')
x=[]
for i in line:
x.append(int(i))
list.append(x)
count+=1
elif count==3:
maxcount=int(line.rstrip('\n'))
for i in range(count):
for j in range(count):
print(list[i][j],' ',end=' ')
print()
print(maxcount)
count+=1
elif maxcount>0:
line=line.rstrip('\n')
lines=line.split(' ')
print(" ".join(lines))
maxcount-=1
readfile("file.txt")
解决方法
我已经定义了两个执行这些操作的函数。你可以传递 right=True 或 up=True 并且有一个可选参数,通过它旋转 n 步。
def rotate_row_elements(matrix,row,by,right=True):
if right:
for i in range(by):
matrix[row] = [matrix[row].pop(),*matrix[row]]
else:
for i in range(by):
matrix[row] = [*matrix[row][1:],matrix[row][0]]
def rotate_col_elements(matrix,col,down=True):
if down:
temp = [matrix[j][col] for j in range(len(matrix))]
for i in range(by):
temp = [temp.pop(),*temp]
for j in range(len(matrix)):
matrix[j][col] = temp[j]
else:
temp = [matrix[j][col] for j in range(len(matrix))]
for i in range(by):
temp = temp[1:] + [temp[0]]
for j in range(len(matrix)):
matrix[j][col] = temp[j]
matrix = [
[0,5,2],[7,8,4 ],[1,6,3 ]]
rotate_col_elements(matrix,1,2)
print(matrix)
[[0,4],3]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。