[存档!]纯数学、物理学、化学等:与贸易没有任何关系的大脑训练问题 - 页 509

 
Mischek:

他们不会的。虫子也会有凸起的眼睛。而这是一种威慑。

哦,伙计。你已经脱险了。 一个真正的自我推销的专业人士。

 

曲棍球运动员们不想放手。 在我们打哈欠的蠢蠢欲动中,我写了一个矫枉过正的脚本。 还说 "不存在"。

也许我在剧本里打了个哈欠?希望的人可以查看。

// 修复了该脚本。这是一个非关键性的故障。结果仍然是一样的。

附加的文件:
hockey_1.mq5  2 kb
 
MetaDriver:

曲棍球运动员们不想放手。 在我们打哈欠的蠢蠢欲动中,我写了一个矫枉过正的脚本。 还说 "不存在"。

也许我在剧本里打了个哈欠?希望的人可以查看。

// 修复了该脚本。这是一个非关键性的故障。结果仍然是一样的。

事后我也做了同样的事情。答案是一样的!:)))
 
MaxZ:
事后我也做了同样的事情。答案是一样的!:)))
如果你不介意的话,给我看看源代码。我对你的算法感兴趣。你可以当面寄给我。
 

算法的正面。不假思索地写道(3-5分钟)。要花很长时间来计算!:D

for (int A6 = 1; A6 <= 6; A6++)
for (int A5 = 1; A5 <= 6; A5++)
for (int A4 = 1; A4 <= 6; A4++)
for (int A3 = 1; A3 <= 6; A3++)
for (int A2 = 1; A2 <= 6; A2++)
for (int A1 = 1; A1 <= 6; A1++)
for (int B6 = 1; B6 <= 6; B6++)
for (int B5 = 1; B5 <= 6; B5++)
for (int B4 = 1; B4 <= 6; B4++)
for (int B3 = 1; B3 <= 6; B3++)
for (int B2 = 1; B2 <= 6; B2++)
for (int B1 = 1; B1 <= 6; B1++)
   if (A6 != A5 && A6 != A4 && A6 != A3 && A6 != A2 && A6 != A1
                && A5 != A4 && A5 != A3 && A5 != A2 && A5 != A1
                            && A4 != A3 && A4 != A2 && A4 != A1
                                        && A3 != A2 && A3 != A1
                                                    && A2 != A1
    && B6 != B5 && B6 != B4 && B6 != B3 && B6 != B2 && B6 != B1
                && B5 != B4 && B5 != B3 && B5 != B2 && B5 != B1
                            && B4 != B3 && B4 != B2 && B4 != B1
                                        && B3 != B2 && B3 != B1
                                                    && B2 != B1
    && A6 != B6 && A5 != B5 && A4 != B4
    && A3 != B3 && A2 != B2 && A1 != B1)
   {
      int A = A6*100000+A5*10000+A4*1000+A3*100+A2*10+A1;
      int B = B6*100000+B5*10000+B4*1000+B3*100+B2*10+B1;
      if (MathMod(A, B) == 0)
         Print(A6,A5,A4,A3,A2,A1,"/",B6,B5,B4,B3,B2,B1,"=",A/B);
   }

P.S.: 然后我意识到,有可能使B-arrays的迭代次数大大减少...

 
明白了,谢谢!
 
MaxZ:

算法的正面。不假思索地写道(3-5分钟)。要花很长时间来计算!:D

P.S.: 后来我意识到,B型数组的迭代次数可以少很多......

我很想知道如何以及在何种程度上可以优化这个枚举。

在这里,我在一台慢速机器上有~875毫秒。 (你有17516毫秒)。

我怎样才能再快十倍地扭动起来呢?

我看到两个选择:(1)切断不必要的过冲,(2)加快验证。

你有什么想法?

// 我正在邀请那些愿意的人。 对于下一个问题,它可以做到。

 
MetaDriver:

//我正在邀请志愿者。 这对下一个任务有好处。

关于任务,我在写代码的时候也在想同样的事情!"。:)))我想建议它。但是消失了,因为我不得不创建一个新的主题。如何加快代码的速度,我知道(虽然,不是很好的会变成)。但我想的不仅仅是加快它的速度,还想让它变得更漂亮!


MetaDriver

Vapchet有趣的是,如何以及在多大程度上可以优化这种过冲现象。

我的机器也很糟糕...我无法测试一个复杂的专家顾问,而一个简单的专家顾问却可以在很长一段时间内进行优化,没有任何复杂的问题!:D


MetaDriver

在这里,我在一台慢速机器上计算了~875ms。 (你有17516毫秒)。

我怎样才能再快十倍地扭动起来呢?

我看到两个选择:(1)切断不必要的过冲,(2)加快验证。

你有什么想法?

我认为,如果你删去多余的矫枉过正,执行时间会接近你的结果(我仔细看了一下数字上的差异,觉得 "不太可能")!我想,如果你把这些数字删掉,执行时间会接近你的结果。关于这个想法,继续思考。

 

并加速 我的代码可以分解if,由一个复杂的36个检查条件组成,变成36个有简单条件的if!:)))

我认为代码的速度会大大加快,尽管要确定你需要了解机器指令,这就是编译的结果。

总的来说,业绩的话题一直让我担心,就像其他事情一样。

 
MaxZ: 而总的来说,关于业绩的话题一直让我担心,就像其他事情一样。
我不喜欢使用continue 和break运算符,但也许它们可以帮助你,特别是如果你在mql中使用if的36倍嵌入,它可能不会 "工作"。