第33講 数独(ナンバープレイス)問題解決ソフトVer.4の制作
(数独(ナンバープレイス)問題作成ソフトに挑戦する人は☆☆)
第9話 Ver.7コード解説その7=逆部分構造解析行部分解説
                         void gyakububunkouzoukaiseki(char 
g){
                                 register char i,j;
                                 char x,y,xs,ys;
                                 x=iz[g];
                                 y=jz[g];
                                 ys=y/3;
                                 xs=x/3;
                                 for(i=0;i<9;i++){
                                         if(a[i][y]==0){
                                                
 if(h1[g][i]==1){
                                                        
 lst[i][y][a[x][y]-1]=0;
                                                        
 b[i][y]++;
                                                        
 if(b[i][y]==2)chs--;
                                                
 }
                                         }
                                 }
                                 for(i=0;i<9;i++){
                                         if(a[x][i]==0){
                                                
 if(h2[g][i]==1){
                                                        
 lst[x][i][a[x][y]-1]=0;
                                                        
 b[x][i]++;
                                                        
 if(b[x][i]==2)chs--;
                                                
 }
                                         } 
                                 } 
                                 for(i=0;i<3;i++){
                                         for(j=0;j<3;j++){
                                                
 if((3*ys+j!=y) && 
(3*xs+i!=x) && (a[3*xs+i][3*ys+j]==0)){
                                                        
 if(h3[g][i][j]==1){
                                                                
 lst[3*xs+i][3*ys+j][a[x][y]-1]=0;
                                                                
 b[3*xs+i][3*ys+j]++;
                                                                
 if(b[3*xs+i][3*ys+j]==2)chs--;
                                                
         }
                                                
 }
                                         }
                                 }
                         }
逆部分構造構造解析の名称を使っていますが、
実際にやっていることは、部分構造解析のキャンセルです。
つまり、部分構造解析において
lst[4][0][0]=2,lst[4][0][1]=9,lst[4][0][2]=8,lst[4][0][3]=7
としたら、
lst[4][0][0]=2,lst[4][0][1]=7,lst[4][0][2]=8,lst[4][0][3]=9
としているのです。b[i][y]++;
第8話へ 第34講第1話へ

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