购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

幻方

最后,本章还有另一个很酷的项目:幻方。

你知道幻方吗?如图7.7所示,这是一个由16个方格以“4×4”形式排布成的正方形,每个方格中都有一个数字。水平的一行中、垂直的一列中以及两条对角线上的数字,它们的和完全相同。幻方内部,每个“2×2”的方格中,数字的和,以及四个角上数字的和也相同。

这是一个示例(如图7.7所示)。

图7.7 和为22的简单幻方

你试试将每一行、每一列以及两个对角线上的数字相加,和始终为22。组成这一个大正方形的四个小正方形,以及大正方形中心的小正方形中的数字和也相同。即使你将四个角上的数字相加,你也会得到22。总之,你会以不同的方式计算得出18个22。神奇吧?

如果我们用Python创建这样一个正方形,用其他数字替换图中的数字,我们需要做什么?当然,你可以使用一个公式来计算幻方中的单个数字。你可以使用搜索引擎查找公式,使用搜索引擎你几乎可以找到所有内容。所以我们不必自己思考公式,只需要在程序中正确应用它们即可。

这样创建一个幻方:我们定义两个整数,分别称为a和b;无论哪个,都必须至少为1或更大的数字;现在,我们可以使用以下公式计算正方形中的内容。魔法要开始起作用了(如图7.8所示)。

图7.8 这些是幻方每个单元的计算公式。a和b是大于0的任何整数

还有另一个公式:当为a和b指定数字后,第一行或列的数字之和将通过公式"21*a+b"计算得出。

我们不需要知道更多内容了。现在,我们可以编写一个程序,在确定a和b后,以四排命令,输出计算出的幻方中全部16个数字。我们需要打字输入:

首先输入a(任意不为0的整数),然后输入b(也是任意不为0的整数),然后Python首先计算幻方各组数字之和(使用公式a*21+b)并输出数值,然后根据我们的公式计算所有方格中的数字,并按照四行将其输出。虚线仅在输出期间用作概览,并标记数字的起始和结束。

代码中带有“#”的注释

顺便说一句,代码中的第四行是注释行:你可以随时将注释插入任何Python程序中,既可以是单独一行,也可以直接跟在命令之后。它们始终以“#”号开头,并在行的末尾结束。执行程序时,注释会被忽略。它们仅用于为程序添加解释和说明。

首先尝试为a和b分别输入数字1。然后上面显示的幻方的和恰好都是22(如图7.9所示)。如果不是,则你的程序中的某处肯定存在错误。

现在你可以测试任意数值。数字可能会很大,你可能无法用大脑进行运算。但是,如果正确输入了程序,就可以确保幻方正常工作。

图7.9 这样就输出了最简单的幻方(a=1,b=1) bW2wdRb/AjT2Z0Ta8jr97/ynOFlUAwlzNJl+KoYeknKwH/mW5HrSEw3SZac2LjvD

点击中间区域
呼出菜单
上一章
目录
下一章
×