如何使用python创建幻方阵



给你一个矩阵形状的篮子。如果矩阵的大小是N × N,那么你可以在篮子的每个槽中放入的鸡蛋的数量范围是1到N2。你的任务是排列篮子里的鸡蛋,使矩阵的每一行、每一列和对角线的总和保持不变

此代码只适用于奇数,不适用于偶数。

这是我的代码,我试过,但它没有工作'

def matrix(n): 
m = [[0 for x in range(n)] 
for y in range(n)]
i = n / 2
j = n - 1
num = 1
while num <= (n * n): 
if i == -1 and j == n:
j = n - 2
i = 0
else:
if j == n: 
j = 0 
if i < 0: 
i = n - 1
if m[int(i)][int(j)]:
j = j - 2
i = i + 1
continue
else: 
m[int(i)][int(j)] = num 
num = num + 1
j = j + 1
i = i - 1
print ("Sum of eggs in each row or column and diagonal ",n * (n * n + 1) / 2, "n") 
for i in range(0, n): 
for j in range(0, n): 
print('%2d ' % (m[i][j]),end = '') 
if j == n - 1:  
print()
n=int(input("Number of rows of matrix:"))
matrix(n)

def matrix(n): 
m = [[0 for x in range(n)] 
for y in range(n)]
i = n / 2
j = n - 1
num = 1
while num <= (n * n): 
if i == -1 and j == n:
j = n - 2
i = 0
else:
if j == n: 
j = 0 
if i < 0: 
i = n - 1
if m[int(i)][int(j)]:
j = j - 2
i = i + 1
continue
else: 
m[int(i)][int(j)] = num 
num = num + 1
j = j + 1
i = i - 1
print ("Sum of eggs in each row or column and diagonal ",n * (n * n + 1) / 2, "n") 
for i in range(0, n): 
for j in range(0, n): 
print('%2d ' % (m[i][j]),end = '') 
if j == n - 1:  
print()

n=int(输入("矩阵的行数:"))矩阵(n)

def forEvenNumber(n):
arr = [[(n * y) + x + 1 for x in range(n)] for y in range(n)]
for i in range(0, n // 4):
for j in range(0, n // 4):
arr[i][j] = (n * n + 1) - arr[i][j];
for i in range(0, n // 4):
for j in range(3 * (n // 4), n):
arr[i][j] = (n * n + 1) - arr[i][j];
for i in range(3 * (n // 4), n):
for j in range(0, n // 4):
arr[i][j] = (n * n + 1) - arr[i][j];
for i in range(3 * (n // 4), n):
for j in range(3 * (n // 4), n):
arr[i][j] = (n * n + 1) - arr[i][j];
for i in range(n // 4, 3 * (n // 4)):
for j in range(n // 4, 3 * (n // 4)):
arr[i][j] = (n * n + 1) - arr[i][j];
print("nSum of all row, column and diagonals = ",
n * (n * n + 1) // 2, "n")
for i in range(n):
for j in range(n):
print('%2d ' % (arr[i][j]), end=" ")
print()
def forOddNumber(n):
mgsqr = [[0 for x in range(n)]
for y in range(n)]
r = n // 2
c = n - 1
num = 1
while num <= (n * n):
if r == -1 and c == n:
c = n - 2
r = 0
else:
if c == n:
c = 0
if r < 0:
r = n - 1
if mgsqr[int(r)][int(c)]:
c = c - 2
r = r + 1
continue
else:
mgsqr[int(r)][int(c)] = num
num = num + 1
c = c + 1
r = r - 1
print("nSum of all row, column and diagonals = ",
n * (n * n + 1) // 2, "n")
for i in range(0, n):
for j in range(0, n):
print('%2d ' % (mgsqr[i][j]), end='')
print()
print("nWELCOME:)n")
n = int(input("Please Enter Number of Rows and Column (n*n): "))
if n%2==0:
forEvenNumber(n)
else:
forOddNumber(n)
print("nThank You :)")

这应该接受偶数输入并给出正确的输出!

相关内容

  • 没有找到相关文章

最新更新