第30講 数独(ナンバープレイス)問題解決ソフトVer.1の制作
(数独(ナンバープレイス)問題作成ソフトに挑戦する人は☆☆)


第13話 時間計測を加える+再入力を可能にする
Form1
C++
コード変更部分
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          int i,j;
          
dataGridView1->Rows->Clear();
          array<String^>^ x=gcnew array<String^>(15);
          for(i=1;i<14;i++){
            if(i%4==1)for(j=0;j<13;j++)x[j]=L"*";
            if(i%4!=1)for(j=1;j<13;j++){
              if(j%4==1)x[j]=L"*";
              if(j%4!=1)x[j-1]=L"";
            }
            dataGridView1->Rows->Add(x);
          }

       }

  private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
          array<String^,2>^ w=gcnew array<String^,2>(15,100); 
          int i,j;
          for(i=0;i<15;i++)dataGridView1->Rows->Add();
          for(i=0;i<14;i++){
            for(j=0;j<14;j++){
              w[i,j]=static_cast<String^>(dataGridView1[j,i]->Value);
            }
          }
          char k1=0,k2;
          DateTime^ hj=DateTime::Now; //開始時間
          for(i=0;i<13;i++){
            if(i%4==0)k1++;
              if(i%4!=0){
                k2=0;
                for(j=0;j<13;j++){
                  if(j%4==0)k2++;
                  if(j%4!=0){
                    if(w[i,j]!=L"")a[i-k1][j-k2]=int::Parse(w[i,j]);
                    if(w[i,j]==L"")a[i-k1][j-k2]=0;
                  }
                }
              }
            }
            s=0;
            f(0);
            
DateTime^ ow=DateTime::Now; //終了時間
            TimeSpan sa=ow->Subtract(*hj); //経過時間の計算
            dataGridView1[30,27]->Value=L"解答作成時間";
            dataGridView1[30,28]->Value=sa.TotalSeconds.ToString();

         }


ダウンロード用参考ファイルForm1.h
ダウンロード用実行ファイル(EXEファイル)

予想以上の成果がありました。本に載っている超上級クラスでも0.02秒以内で解いてしまいます。
問題全体構造解析、問題部分構造解析、を付け加えるとどれだけ速くなるか楽しみです。
VBAで実験したときには、何百倍から数十万倍の速さになりました。
VC++版ではどうでしょうか。

では、次に
Ⅲ 解答が存在しない問題である場合、答えのない不適切な問題であることを指摘する。
Ⅳ 答えが複数存在した場合にも、答えの複数ある不適切な問題であること指摘する。
の2つを加えましょう。

第12話へ 第14話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)