神奇的星星

神奇的星星都是有点像魔术方块。我的孙子被介绍给他们在他初中数学课。

内容

家族企业

这篇文章是一个家族企业。我的孙子本听说五点魔术明星在他初中数学课,他们用手解决。本告诉他妈妈锦,我的女儿,谁写的MATLAB程序,然后告诉我。

天文台

这是我使用的函数,看星星。

类型天文台
函数天文台(v) %天文台视图神奇的星星。%天文台(v), 10或12 v是一个向量的整数。clf n =长度(v) / 2;d =π/ n;t = 0:2 * n - 1;r0 =点+ .20 * (n = = 5);r = 1 - r0 * (mod (t, 2) = = 1);x = r。* sin (t * d);y = r。* cos (t * d);p =情节(x, y,“o”,“markersize”, 28岁的“markeredgecolor”,[0 0点]); axis(1.25*[-1 1 -1 1]) axis square set(gca,'xtick',[],'ytick',[]) if n == 5 h = line([x(1:4:2*n) x(3:4:2*n) x(1)], ... [y(1:4:2*n) y(3:4:2*n) y(1)]); elseif n == 6 h = [line([x(1:4:2*n) x(1)],[y(1:4:2*n) y(1)]) line([x(3:4:2*n) x(3)],[y(3:4:2*n) y(3)])]; else error('Can only observe 10 or 12 points') end set(h,'color',[0 .66 .66]) for k = 1:2*n text(x(k),y(k),int2str(v(k)),'fontsize',18,'horiz','center') end end

基本的明星

有很多种类的神奇的星星。这是最基本的。画一个正则n分星你学会了画一个5星。连接n周围一圈的点均匀分布n备用点之间的界线。这产生一个常规n百分度的内部。的顶点外点,加上内部多边形的顶点,给你2 n点。这里有5和6点星星,点连续顺时针顺序编号。

天文台(1:10)snapnow天文台(1:12)

神奇的星星

将其中一颗恒星变成一个神奇的明星,你需要重新整理数据,总结每个n线是平等的,就像沿着行和列的金额在一个神奇的广场。事实证明这是不可能的5星,我们将不得不修改规则。但有可能6个明星。

五点

从1到10的整数的总和S = 55。有五行5星和每个整数都是两个相交的线,如果在每一行的金额是相等的,这和必须L = (2/5) = 22。我们正在寻求一个排列p前十的整数满足五个方程。

$ $ p_1 + p_2 + p_4 + p_5 = L $ $

$ $ p_3 + p_4 + p_6 + p_7 = L $ $

$ $ p_5 + p_6 + p_8 + p_9 = L $ $

$ $ p_7 + p_8 + p_ {10} + p_1 = L $ $

$ $ p_9 + p_ {10} + p_2 + p_3 = L $ $

这些方程的下标可以读出后对面的一线明星。

一个详尽的搜索所有10个!整数1到10的排列显示,没有解决这些方程,所以不存在完美的五点魔术明星。金宝搏官方网站

但不要绝望。放松规则允许更多的球员。本的类被发现的挑战一个魔法潜油电泵使用九星的十个整数1到10之间,以及使用12。他们必须小心。之和年代需要5的倍数,因为总是行数目L = (2/5)。所以他们知道他们必须排除2或7。让我们先试着离开了7。

我会给整数12一个特殊的角色,在恒星的顶端固定它。这就消除了所有的星星,从那些我将发现获得简单的旋转,同时也消除了所有的星星,12是一个内部点。它只剩下九个整数排列。这是参数。

清楚n = 5;开馆v = [1:6];%省略7。S =总和(v) + 12 L = 2 / n * (S
S = 60 L = 24

使用MATLAB函数烫发生成所有可能的排列的九个免费的整数。

P =烫发(v);

插入一列12面前产生一个矩阵与9 !(9)!)10行和列。

P =[12 *的(大小(P, 1), 1) P);sizeP =大小(P)
sizeP 10 = 362880

我们使用多少存储。

类属性名称大小字节L 1 x1 8双P 362880 x10 362880双S 1 x1 8双n 1 x1 8双sizeP 1 x2 16双v 1 x9 72双

我的笔记本电脑可以处理29兆字节。

我们准备寻找解决方案。金宝搏官方网站

f =找到(P (: 1) + P (:, 2) + P (:, 4) + P (:, 5) = = L &P (:, 3) + P (:, 4) + P (:, 6) + P (:, 7) = = L &P (: 5) + P (:, 6) + P (:, 8) + P (:, 9) = = L &P (: 7) + P (:, 8) + P (:, 10) + P (: 1) = = L &P (: 9) + P (:, 10) + P (:, 2) + P (:, 3) = = L)
f = 85418 99312 133775 139937 205213 222969 257655 272091 284491 298403 322934 361090

超过三分之一的一百万种排列,这些指标满足五线方程。以下是这些解决方案。金宝搏官方网站

P = P (f,:)
P = 12 8 9 10 1 3 4 5 6 2 12 8 5 3 1 10 6 4 2 9 12 6 4 2 2 1 9 8 5 3 12 6 5 4 9 8 1 10 3 12 4 9 2 6 5 8 3 10 1 12 4 5 6 2 5 3 8 9 1 12 3 8 1 9 2 4 1 8 9 10 6 12 3 4 2 5 6 12 2 9 4 6 10 1 3 5 8 12 2 5 6 4 10 3 2 1 9 8 12 1 9 8 3 5 6 10 4 12 1 3 8 5 6 2 9 4

十二个解决方案金宝搏官方网站被发现。最后的解决方案从1到5的整数的内部。

:p = p(12日)天文台(p)
p = 12 1 10 3 8 5 6 2 9 4

旋转和反思

我们寻找恒星形成从整数1到12,离开7和11,发现12的解决方案。金宝搏官方网站但过去六实际上是前六的倒影。看看解决方案数组P,而忽视第一列12个年代。如果你倒着读过去六行,从右到左,你会得到前六行以不同的顺序。你也可以认为这是顺时针和逆时针的索引。

因此,我们发现在顶点6截然不同的解决方案和12。金宝搏官方网站有三种转换可以在这些解决方案。金宝搏官方网站这将生成所有可能的魔术明星,可以用这组整数。

反映纵轴。

p = p([1 10: 1:2])天文台snapnow (p)
p = 12 4 9 2 6 5 8 3 10 1

旋转,反时针。

p = p([3:10 1:2])天文台snapnow (p)
p = 9 2 6 5 8 3 10 1 12 4

,交换内部与外部。

p = p([6:10 1:5])天文台snapnow (p)
p = 3 10 1 12 4 9 2 6 5 8

应用两个倒影,五个旋转,两个倒置的原始六个解决方案产生的金宝搏官方网站6 * 2 * 5 * 2 = 120不同的神奇的星星。

五点多明星

您可以修改我的代码离开2而不是7。使用1 v = [3:10]而不是开馆v = [1:6]。你会发现,寻找解决方案是空的。金宝搏官方网站神奇的恒星形成从1到12的整数没有2和11不存在。

你也可以尝试包括11名,但离开2和6。使用v = [1 3:5 7:11]而不是开馆v = [1:6]。这些恒星和我们之间有一个同构我上面描述的吗?

六点

我们可以做6个明星使用从1到12的整数,所以我们不需要破坏规矩。但是我要限制搜索空间和内存使用的时候要更加小心。

这是线。

清楚n = 6;S = (1:2 * n)总和;L = 2 S / n *
L = 26

我已决定限制搜索空间的演艺明星在顶点11和12。所以我需要找到所有排列剩下的从1到10的整数。这将使用十倍的内存我需要做5星,我的笔记本电脑不能处理它。而是存储整数为MATLAB默认eight-byte双精度数字,我可以使用1字节uint8s和减少内存需求的八倍。

找到所有排列的十个整数,存储在单个字节。

v = uint8 (1:10);P =烫发(v);

插入一列11和12的列年代在适当的地方。

c =(大小(P, 1), 1,“uint8”);P = [11 * c P (: 1:5) 12 * c P (:, 6:10)];清晰的c

矩阵有10 !行,约为360万。

sizeP =大小(P)
sizeP = 3628800 12

但是上面不超过所需的存储。

类属性名称大小字节L 1 x1 8双P 3628800 x12 3628800 uint8 S 1 x1 8双n 1 x1 8双sizeP 1 x2 16双v 1 uint8 10 x10

有六个方程感到满意。

f =找到(P (: 1) + P (:, 2) + P (:, 4) + P (:, 5) = = L &P (:, 3) + P (:, 4) + P (:, 6) + P (:, 7) = = L &P (: 5) + P (:, 6) + P (:, 8) + P (:, 9) = = L &P (: 7) + P (:, 8) + P (:, 10) + P (:, 11) = = L &P (: 9) + P (:, 10) + P (:, 12) + P (: 1) = = L &P (: 11) + P (:, 12) + P (:, 2) + P (:, 3) = = L)
f = 235278 520708 641908 1321733 1522350 1930425 1522350 1321733

这里有八个解决方案在360万行。金宝搏官方网站同样,过去四是前四的逆转。

P = P (f,:)
P = 11 10 4 2 1 3 8 12 6 9 7 5 11 9 6 1 5 7 12 4 10 2 8 3 11 9 3 1 5 10 12 4 7 2 8 6 11 7 4 2 6 8 12 3 9 1 10 5 11 6 8 2 7 4 12 10 5 1 3 9 11 5 7 1 9 6 12 8 3 2 4 10 11 5 10 1 9 3 12 8 6 2 4 7 11 3 8 2 10 4 12 7 5 1 6 9

我认为第一个是相当有吸引力。我没有调查所有可能的对称性和转换。

天文台(P (1,:))

进一步的阅读

玛丽安Trenkler,神奇的星星2004年,中外日报》11日,549 - 554

哈维·海因茨,魔术明星索引页,< http://www.magic-squares.net/magic_stars_index.htm>




发表与MATLAB®R2014a

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。