[アーカイブ!】純粋数学、物理学、化学など:トレードとは一切関係ない脳トレ問題集 - ページ 509

 
Mischek:

それはないでしょう。また、虫の目も膨らんできます。そしてそれが抑止力になる。

やばいな。あなたはオフになっています。 まさに自己顕示欲の塊のようなプロフェッショナル。

 

ホッケーの選手たちは、手放そうとしなかった。 私たちのあくどさに期待して、オーバーキルのスクリプトを書きました。 また、"doesn't exist "とも言います。

もしかして、台本にあくびが出た?ご希望の方はご確認ください。

// スクリプトを修正しました。致命的ではない故障でした。結果は変わらない。

ファイル:
hockey_1.mq5  2 kb
 
MetaDriver:

ホッケーの選手たちは、手放そうとしなかった。 私たちのあくどさに期待して、オーバーキルのスクリプトを書きました。 また、"doesn't exist "とも言います。

もしかして、台本にあくびが出た?ご希望の方はご確認ください。

// スクリプトを修正しました。致命的ではない故障でした。結果は変わらない。

その後、私も同じことをしました。答えは同じです!:)))
 
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);
   }

追記:その後、Bアレイの繰り返しをもっと少なくすることができることに気づきました...。

 
了解です、ありがとうございます
 
MaxZ:

アルゴリズムを真正面から何も考えずに書いた(3~5分)。カウントに時間がかかる!:D

追記:その後、B配列に対する反復計算がもっと少なくなることに気づきました...。

この列挙をどのように、どの程度まで最適化できるのかが気になるところです。

ここでは、遅いマシンで875ミリ秒です。 (17516msになります)。

どうすれば、さらに10倍の速さでひねり出せるのか。

1)無駄なオーバーシュートをカットする、(2)検証を高速化する、の2つの選択肢があると思います。

あなたのアイデアは?

// 希望者を募っています。 次の問題にも対応できる。

 
MetaDriver:

//ボランティアを募集しています。 次の仕事に活かせそうです。

タスクの件ですが、私もコードを書いているときに同じことを考えていましたよ。:)))提案したかったんです。しかし、新しいトピックを作成しなければならないため、消えました。コードを高速化する方法、私は知っています(ただし、あまりいい結果にはならないでしょうが)。でも、ただ速くするだけでなく、美しく仕上げたいんです


MetaDriver

Vapchet興味深いのは、このオーバーシュートをどのように、どの程度まで最適化できるかということです。

私のマシンもひどいものです...。複雑なExpert Advisorをテストすることはできませんが、シンプルなものであれば、複雑なことなく長い間最適化することができます。:D


MetaDriver

ここでは、低速のマシンで875ミリ秒をカウントしています。 (17516msとなります)。

どうすれば、さらに10倍の速さでひねり出せるのか。

1)無駄なオーバーシュートをカットする、(2)検証を高速化する、の2つの選択肢があると思います。

あなたのアイデアは?

余計なオーバーキルをカットすれば、実行時間はYour resultに近づくと思います!(数字の差をよく見て、「ありえない」と思っていました。)アイデアについて、考え続けてください。

 

そして加速する 私のコードは、複雑な36項目のチェック条件からなるifを、単純な条件の36個のifに分解することができるのです!:)))

確実に知るためには、コンパイルの結果であるマシン命令を理解する必要がありますが、コードはかなり高速化されると思います。

そして、一般的に、パフォーマンスに関する話題は、いつも他のものと同じくらい心配でした。

 
MaxZ: そして、一般的に、パフォーマンスの話題は、いつも他のものと同じくらい心配でした。
私はcontinueと break演算 子を使うのは好きではありませんが、もしかしたらあなたの助けになるかもしれません。特にmqlでifの36fold embeddingを使っている場合は、「うまく」いかないかもしれません。