アルゴリズム、解法、性能比較 - ページ 18 1...11121314151617181920212223 新しいコメント Vasiliy Sokolov 2017.12.11 09:53 #171 Реter Konow: ある問題に対する完璧な解決策が、なぜ嘲笑と受け取られるのか。マジで理解できない...。あなたの仕事は何でしたか?ここで公開し、ご自身で思い出してください。 Alexandr Andreev 2017.12.11 09:54 #172 Vasiliy Sokolov:意味不明なことを書いていますね。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、この例は実際の問題を解決する必要があるときに崩れてしまう。明日はきっと、うまくいくから待っててね。 Vladimir Karputov 2017.12.11 09:54 #173 Реter Konow:***サイズが変わっても配列からデータが消えないようにするとしたら、***。ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。//+------------------------------------------------------------------+ //| ArrayResize.mq5 | //| Copyright © 2017, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.001" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- объявим динамические массивы double arr_dynamic[]; double arr_dynamic_multi[][2]; //--- новый размер в первом измерении массива if(ArrayResize(arr_dynamic,5)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic\""); return; } if(ArrayResize(arr_dynamic_multi,5)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic_multi\""); return; } for(int i=0;i<ArraySize(arr_dynamic);i++) arr_dynamic[i]=i; for(int i=0;i<ArrayRange(arr_dynamic_multi,0);i++) { arr_dynamic_multi[i][0]=i; arr_dynamic_multi[i][1]=i*10; } //--- распечатка значений до увеличения размера Print("Перед ArrayResize массив \"arr_dynamic\" имеет такие элементы:"); ArrayPrint(arr_dynamic); Print("Перед ArrayResize массив \"arr_dynamic_multi\" имеет такие элементы:"); ArrayPrint(arr_dynamic_multi); //--- увеличим размер на два элемента if(ArrayResize(arr_dynamic,ArraySize(arr_dynamic)+2)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic\""); return; } if(ArrayResize(arr_dynamic_multi,ArrayRange(arr_dynamic_multi,0)+2)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic_multi\""); return; } //--- распечатка значений после увеличения размера Print("После ArrayResize (увеличения размера) массив \"arr_dynamic\" имеет такие элементы:"); ArrayPrint(arr_dynamic); Print("После ArrayResize (увеличения размера) массив \"arr_dynamic_multi\" имеет такие элементы:"); ArrayPrint(arr_dynamic_multi); //--- новый размер в первом измерении массива установим равным 3 (то есть уменьшим размер массива) if(ArrayResize(arr_dynamic,3)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic\""); return; } if(ArrayResize(arr_dynamic_multi,3)==-1) { Print("Ошибка ArrayResize for \"arr_dynamic_multi\""); return; } //--- распечатка значений после уменьшение размера Print("После ArrayResize (уменьшение размера) массив \"arr_dynamic\" имеет такие элементы:"); ArrayPrint(arr_dynamic); Print("После ArrayResize (уменьшение размера) массив \"arr_dynamic_multi\" имеет такие элементы:"); ArrayPrint(arr_dynamic_multi); } //+------------------------------------------------------------------+ ご覧のように、配列のサイズが 大きくなっても、以前の値が残って います。Перед ArrayResize массив "arr_dynamic" имеет такие элементы: 0.00000 1.00000 2.00000 3.00000 4.00000 Перед ArrayResize массив "arr_dynamic_multi" имеет такие элементы: [,0] [,1] [0,] 0.00000 0.00000 [1,] 1.00000 10.00000 [2,] 2.00000 20.00000 [3,] 3.00000 30.00000 [4,] 4.00000 40.00000 После ArrayResize (увеличения размера) массив "arr_dynamic" имеет такие элементы: 0.00000 1.00000 2.00000 3.00000 4.00000 -0.00000 +0.00000 После ArrayResize (увеличения размера) массив "arr_dynamic_multi" имеет такие элементы: [,0] [,1] [0,] 0.00000 0.00000 [1,] 1.00000 10.00000 [2,] 2.00000 20.00000 [3,] 3.00000 30.00000 [4,] 4.00000 40.00000 [5,] +0.00000 +0.00000 [6,] +0.00000 +0.00000 После ArrayResize (уменьшение размера) массив "arr_dynamic" имеет такие элементы: 0.00000 1.00000 2.00000 После ArrayResize (уменьшение размера) массив "arr_dynamic_multi" имеет такие элементы: [,0] [,1] [0,] 0.00000 0.00000 [1,] 1.00000 10.00000 [2,] 2.00000 20.00000 ファイル: ArrayResize.mq5 6 kb Реter Konow 2017.12.11 09:54 #174 Vasiliy Sokolov:意味不明なことを書いていますね。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、実際の問題を解決する必要があるときに、この例全体が崩れてしまいます。チケットのことを指しているのでしょう。シーケンシャルなトランザクション番号のことです。 チケットを記録するために、隣り合わせに平行配列にすることができます。 あるいは、各注文の残りのデータを記録するために、複数の並列アレイを用意する。 Alexandr Andreev 2017.12.11 09:55 #175 Vladimir Karputov:ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。ご覧のように、配列のサイズを大きく しても、以前の値が残って います。ここに隠す 純粋なOOPとすべての有用性 Реter Konow 2017.12.11 09:55 #176 Vladimir Karputov:ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。ご覧のように、配列のサイズを大きくしても、以前の値は残ります。 ありがとうございます。これは非常に貴重な情報です。 Alexandr Andreev 2017.12.11 09:56 #177 Print and Comment - Why no one is paying attention」についてお話したいと思います。 Sergey Dzyublik 2017.12.11 09:58 #178 Vasiliy Sokolov:ところで、CHashMapにはなぜかCapacityという 魔法のプロパティがありません(これは開発者の重大な過失です)。それを指定することで、再パーティションを回避している。このタスクで指定できるので、特に問題はないでしょう。CHashMapのCapacityは コンストラクタで指定することができます。ワシリー・ソコロフところで、なぜスケーリングの係数が違うのか、これも非常に不思議です。CHashMap は単純な CArrayList よりも並べ替えが難しいです。 CHashMapの辞書サイズは、辞書内のハッシュの均一 性を保つために、単純な数であるべきです。 CHashMapはCPrimeGeneratorを使用して素数を選択する。 しかし、残念ながらCPrimeGeneratorの実装は期待に応えず、以下の値しか入っていません。const static int CPrimeGenerator::s_primes[]= { 3,7,11,17,23,29,37,47,59,71,89,107,131,163,197,239,293,353,431,521,631,761,919, 1103,1327,1597,1931,2333,2801,3371,4049,4861,5839,7013,8419,10103,12143,14591, 17519,21023,25229,30293,36353,43627,52361,62851,75431,90523,108631,130363,156437, 187751,225307,270371,324449,389357,467237,560689,672827,807403,968897,1162687,1395263, 1674319,2009191,2411033,2893249,3471899,4166287,4999559,5999471,7199369 }; 平均成長率は1.2%程度です。 Реter Konow 2017.12.11 09:59 #179 Vasiliy Sokolov:あなたの仕事は何でしたか?ここで公開し、ご自身で思い出してください。将来のトランザクション数が不明な場合に、配列(リスト、辞書...)にメガを追加し、トランザクション番号で 配列からメガを取り出すための最速かつ最も効率的な解を見つけること。 Alexandr Andreev 2017.12.11 10:00 #180 Реter Konow:配列(リスト、辞書...)にメガを追加し、配列からメガを取り出す際に、将来のトランザクション数が未知数である場合に、最も高速で効率的な解決策を求めよ。当然のことながら、チケットは問題なし それでも、私は、ボイラープレート関数のようなすべての種類のものであなたのコードを複雑にし始めることをお勧めします。 1...11121314151617181920212223 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ある問題に対する完璧な解決策が、なぜ嘲笑と受け取られるのか。マジで理解できない...。
あなたの仕事は何でしたか?ここで公開し、ご自身で思い出してください。
意味不明なことを書いていますね。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、この例は実際の問題を解決する必要があるときに崩れてしまう。
明日はきっと、うまくいくから待っててね。
***
サイズが変わっても配列からデータが消えないようにするとしたら、***。
ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。
ご覧のように、配列のサイズが 大きくなっても、以前の値が残って います。
意味不明なことを書いていますね。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、実際の問題を解決する必要があるときに、この例全体が崩れてしまいます。
チケットのことを指しているのでしょう。シーケンシャルなトランザクション番号のことです。
チケットを記録するために、隣り合わせに平行配列にすることができます。
あるいは、各注文の残りのデータを記録するために、複数の並列アレイを用意する。
ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。
ご覧のように、配列のサイズを大きく しても、以前の値が残って います。
ここに隠す 純粋なOOPとすべての有用性
ここでは、動的配列である 1次元のarr_dynamic と2次元のarr_dynamic_multi について確認します。
ご覧のように、配列のサイズを大きくしても、以前の値は残ります。
Print and Comment - Why no one is paying attention」についてお話したいと思います。
ところで、CHashMapにはなぜかCapacityという 魔法のプロパティがありません(これは開発者の重大な過失です)。それを指定することで、再パーティションを回避している。このタスクで指定できるので、特に問題はないでしょう。
CHashMapのCapacityは コンストラクタで指定することができます。
ところで、なぜスケーリングの係数が違うのか、これも非常に不思議です。CHashMap は単純な CArrayList よりも並べ替えが難しいです。
CHashMapはCPrimeGeneratorを使用して素数を選択する。
しかし、残念ながらCPrimeGeneratorの実装は期待に応えず、以下の値しか入っていません。
平均成長率は1.2%程度です。
あなたの仕事は何でしたか?ここで公開し、ご自身で思い出してください。
将来のトランザクション数が不明な場合に、配列(リスト、辞書...)にメガを追加し、トランザクション番号で 配列からメガを取り出すための最速かつ最も効率的な解を見つけること。
配列(リスト、辞書...)にメガを追加し、配列からメガを取り出す際に、将来のトランザクション数が未知数である場合に、最も高速で効率的な解決策を求めよ。
当然のことながら、チケットは問題なし
それでも、私は、ボイラープレート関数のようなすべての種類のものであなたのコードを複雑にし始めることをお勧めします。