定義された要素の配列をクリアする。 - ページ 20

 
ピーターさんは、独特のプログラミングスタイルを持っていますね。要するに、「~だから」ではなく「~にもかかわらず」プログラミングをするということです。
 
Реter Konow:

そうですね。しかし、提供されたアルゴリズムが空白を残さないことをどうやって確認するのでしょうか?チェックサムでは証明できない。要素数も関係ない。結局のところ,この関数は配列のサイズが変更される前に存在していた要素を数えます.

静的配列のバグを修正した実装をヒットさせたわけですが。

int arrayFilter2(int &Test[],const int value)
  {
   int s,_s=s=ArraySize(Test);
   bool result=false;

   for(int i=0,j=0; i<_s; i++,j++)
     {
      if(Test[i]==value)// || Test[i]==NULL)
        {
         result=true;
         s--;
         j--;
         continue;
        }
      if(result)
         Test[j]=Test[i];
     }

   if(s<_s)
      if(ArrayResize(Test,s))
         if(ArraySize(Test)==_s)
            ArrayFill(Test,s,_s-s,NULL);

   return s;
  }

これで、静止していれば、テールをクリアします。

ファイル:
 
Реter Konow:

そうですね。しかし、提供されたアルゴリズムが空白を残さないことをどうやって確認するのでしょうか?チェックサムでは証明できない。要素数も関係ない。結局のところ,この関数は配列のサイズが変更される前に存在していた要素を数えます.

最初のコードではなく、最新のバージョンを見なければならない。
このような、配列の要素の並びを考慮したチェックサムは、古くから利用されている。

double ControlSumm(int &a[]) 
  {
   double sum=0;
   for(int i=0; i<ArraySize(a); i++) sum+=(double)a[i]/(i+1);
   return sum;
  }
 

第3回テストでのミスを修正し、関数を微調整しました。

ファイル:
 
Nikolai Semko:

コードの最初のバージョンではなく、最新のバージョンを見ることになります。
このような、配列の要素の並びを考慮したチェックサムが使われるようになってから、久しい。

正しさを証明する実証的な証拠が必要です。20個の数字が並んでいれば十分です。アルゴリズムがこのテストに合格すれば、速度のテストができるようになります。

実施されたテストはブラインドテストです。

もしかしたら、すべてのアルゴリズムが正しく機能するかもしれませんし、リーダーが倒れてしまうかもしれません。

 
Реter Konow:

正しさを証明する実証的な証拠が必要です。20個の数字が並んでいれば十分です。アルゴリズムがこのチェックをパスすれば、スピードのテストができるようになります。

チェックサムの目的は、チェックサムが同じなら配列が同じであることを保証することではなく、チェックサムが異なるなら配列が異なることを保証することである。

 
Nikolai Semko:

チェックサムの目的は、チェックサムが同じなら配列が同じであることを確認することではなく、チェックサムが異なるなら配列が異なることを確認することである。

ニコライさん、私の例を使って、20個の要素を持つ配列でアルゴリズムを確認するのは難しくないですよね?結果的に出力するだけ?

 
Реter Konow:

正しさを証明する実証的な証拠が必要です。20個の数字が並んでいれば十分です。アルゴリズムがこのテストに合格すれば、速度のテストができるようになります。

実施されたテストはブラインドテストです。

もしかしたら、すべてのアルゴリズムが正しく機能し、リーダーが自分の居場所を離れるかもしれません。

チェックサムを信用しないのであれば、何が問題なのか?

 
Реter Konow:

ニコライさん、私の例を使って、20個の要素を持つ配列でアルゴリズムを確認するのは難しくないですよね?結果に表示するだけ?

20個の要素を持つ配列では、関数の速度を評価することは不可能である。そしてそれがこのスレッドのポイントです。

 
Nikolai Semko:

20要素の配列では、関数の速度を見積もることは不可能です。そして、ここがこの支店のポイントです。

また、アルゴリズムには、不要な要素を削除した上で、配列内の要素を正しく配置するという要件もある。このチェックが先に行われている必要があります。そして、スピードチェックです。