首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parker Square优化

Parker Square优化
EN

Stack Overflow用户
提问于 2016-04-19 03:54:56
回答 1查看 218关注 0票数 0

这里的parker正方形指的是包含整数的9x9网格。在对所有整数平方后,每行、每列和每条对角线的总和是相同的。(网格中的所有单元格不能包含相同的数字)。

https://www.youtube.com/watch?v=aOT_bG-vWyg关于该主题的5分钟视频

我正在尝试解决这个问题,但我需要一些帮助来优化我目前的解决方案,这是相当业余的。

首先,我将9x9网格中的所有单元格命名为变量a-i,然后分别计算每列、行和对角线的平方和,并检查它们是否都相等一次。

下面是我的Python代码,有什么建议吗?

代码语言:javascript
复制
for a in range(1,10):
    for b in range(1,10):
        for c in range(1,10):
            for d in range(1,10):
                for e in range(1,10):
                    for f in range(1,10):
                        for g in range(1,10):
                            for h in range(1,10):
                                for i in range(1,10):
                                     j=a**2+b**2+c**2
                                     k=d**2+e**2+f**2
                                     l=g**2+h**2+i**2
                                     m=a**2+d**2+g**2
                                     n=b**2+e**2+h**2
                                     o=c**2+f**2+i**2
                                     p=a**2+e**2+i**2
                                     q=c**2+e**2+g**2
                                     if j==k and k==l and l==m and m==n and n==o and o==p and p==q:
                                         print(a)
                                         print(b)
                                         print(c)
                                         print(d)
                                         print(e)
                                         print(f)
                                         print(g)
                                         print(h)
                                         print(i)
                                     break
EN

回答 1

Stack Overflow用户

发布于 2016-04-19 04:09:00

你的代码能工作吗?(这可能是你的第一个任务。)

一些建议..。

1)你认为这可能类似于魔方吗?有一些方法可以构造它们,比如https://plus.maths.org/content/anything-square-magic-squares-sudoku,这可能会有所帮助。

2)由于不能包含同一个数字两次,如果两个数字相同,也许可以退出循环。这是一个比平方和求和更快的操作。

3)你可以考虑强度的降低。如果两行中的数字相加相等,那么它们的平方和是否也相等?

4)而不是对所有999,999,999个组合使用暴力,您可以将向量1,2,3,4,5,6,7,8,9置换吗?这里有一个关于python置换的好问题:How to generate all permutations of a list in Python

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36703159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档