def expandSquare(square):
n = len(square[0])
for i, row in enumerate(square):
row.append(n**2 + 1 + 2*i)
square.append([k for k in range(n**2 + 2, (n+1)**2,2)] + [(n+1)**2])
def makeSquare(n):
square = [[1]]
for i in range(1,n): expandSquare(square)
return square
def pprint(square):
print('\n'.join('\t'.join(str(i) for i in row) for row in square))
2 回答
似乎一般规则如下:
给定一个位置作为元组(n,m),下一个位置是
(n 1,0),如果n = m
(m,n),如果n> m
(m,n 1),如果n <m
在Python中:
例:
结果:
这是一个Python解决方案,首先将每一行扩展到每个其他数字,从最后一个完美正方形开始,然后添加一个新行,其中包含每个其他数字,其中包含2个以上的完美正方形,以及最后的条目(这是序列中的下一个完美的正方形):
例如,