Changeset 136

Show
Ignore:
Timestamp:
04/07/04 10:07:46 (5 years ago)
Author:
ug
Message:

Continue transcoding patternPY.py

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 06/devel/pattern.cc

    r133 r136  
    2424 
    2525#include "pattern.h" 
    26  
    27  
    28  
    29 // class Symmetries 
    30  
    31 // dictionary (int i,int j): ((int k,int l), bool colorSwitch) 
    3226 
    3327Symmetries::Symmetries(int sX, int sY) { 
     
    5246Symmetries::Symmetries(const Symmetries& s) { 
    5347  sizeX = s.sizeX; 
    54   // FIXME 
    55 
    56  
     48  sizeY = s.sizeY; 
     49  data X = new int[sizeX*sizeY]; 
     50  dataY = new int[sizeX*sizeY]; 
     51  dataCS = new int[sizeX*sizeY]; 
     52  for(int i=0; i<sizeX*sizeY; i++) { 
     53    dataX[i] = s.dataX[i]; 
     54    dataY[i] = s.dataY[i]; 
     55    dataCS[i] = s.dataCS[i]; 
     56  } 
     57
     58 
     59Symmetries& Symmetries::operator=(const Symmetries& s) { 
     60  if (&s != this) { 
     61    sizeX = s.sizeX; 
     62    sizeY = s.sizeY; 
     63    delete [] dataX; 
     64    delete [] dataY; 
     65    delete [] dataCS; 
     66    data X = new int[sizeX*sizeY]; 
     67    dataY = new int[sizeX*sizeY]; 
     68    dataCS = new int[sizeX*sizeY]; 
     69    for(int i=0; i<sizeX*sizeY; i++) { 
     70      dataX[i] = s.dataX[i]; 
     71      dataY[i] = s.dataY[i]; 
     72      dataCS[i] = s.dataCS[i]; 
     73    } 
     74  } 
     75  return *this; 
     76
    5777 
    5878void Symmetries::set(int i, int j, int k, int l, int cs) { 
     
    325345} 
    326346 
     347 
     348PatternList::PatternList(const PatternList& pl) { 
     349  printf("OUCH. Copy constructor for PatternList needed.\n"); // FIXME 
     350} 
     351 
     352PatternList& PatternList::operator=(const PatternList& pl) { 
     353  printf("OUCH. operator= for PatternList needed.\n"); // FIXME 
     354  return *this; 
     355} 
     356 
    327357         
    328358char PatternList::invertColor(char co) { 
     
    347377    int finv = PatternInvFlip(f); 
    348378     
    349     int newLeft = flipsX(f, left, top, boardsize-1, boardsize-1); 
    350     int newRight = flipsX(f, right, bottom, boardsize-1, boardsize-1); 
    351  
    352     if (newRight < newLeft) { 
    353       int help = newLeft; 
    354       newLeft = newRight; 
    355       newRight = help; 
    356     } 
    357  
    358     int newTop = flipsY(f, pattern.left, pattern.top, boardsize-1, boardsize-1); 
    359     int newBottom = flipsY(f, pattern.right, pattern.bottom, boardsize-1, boardsize-1); 
    360  
    361     if (newBottom < newTop) { 
    362       int help = newTop; 
    363       newTop = newBottom; 
    364       newBottom = help; 
    365     } 
    366  
    367     int newSizeY = 0; // FIXME 
    368     int newSizeX = 0; // FIXME 
    369  
    370     // FIXME: nach flip "entspricht" links oben nicht mehr 0,0, also newInitialPos, newContList anpassen 
    371        
    372   
     379    int newLeft = min(flipsX(f,left,top,boardsize-1,boardsize-1), flipsX(f,right,bottom,boardsize-1,boardsize-1)); 
     380    int newRight = max(flipsX(f,left,top,boardsize-1,boardsize-1), flipsX(f,right,bottom,boardsize-1,boardsize-1)); 
     381    int newTop = min(flipsY(f,left,top,boardsize-1,boardsize-1), flipsY(f,right,bottom,boardsize-1,boardsize-1)); 
     382    int newBottom = max(flipsY(f,left,top,boardsize-1,boardsize-1), flipsY(f,right,bottom,boardsize-1,boardsize-1)); 
     383 
     384    int newSizeX = max(flipsX(f,0,0,sizeX,sizeY), flipsX(f,sizeX,sizeY,sizeX,sizeY)); 
     385    int newSizeY = max(flipsX(f,0,0,sizeX,sizeY), flipsX(f,sizeX,sizeY,sizeX,sizeY)); 
     386 
    373387    char* newInitialPos = new char[pattern.sizeX*pattern.sizeY]; 
    374388    for(int i=0; i<pattern.sizeX; i++) { 
    375389      for(int j=0; j<pattern.sizeY; j++) { 
    376         newInitialPos[flipsX(f,i,j,boardsize-1,boardsize-1) + pattern.sizeX*flipsY(f,i,j,boardsize-1,boardsize-1)] = pattern.getInitial(i, j); 
     390        newInitialPos[flipsX(f,i,j,pattern.sizeX-1,pattern.sizeY-1) + pattern.sizeX*flipsY(f,i,j,pattern.sizeX-1,pattern.sizeY-1)] = pattern.getInitial(i, j); 
    377391      } 
    378392    } 
     
    380394    char* newContList = new char[pattern.lenContList*4]; 
    381395    for(int i=0; i<pattern.lenContList; i++) { 
    382       newContList[4*i] = flipsX(f, pattern.contList[4*i], pattern.contList[4*i+1], boardsize-1,boardsize-1); 
    383       newContList[4*i+1] = flipsY(f, pattern.contList[4*i], pattern.contList[4*i+1], boardsize-1,boardsize-1); 
     396      newContList[4*i] = flipsX(f, pattern.contList[4*i], pattern.contList[4*i+1], pattern.sizeX-1,pattern.sizeY-1); 
     397      newContList[4*i+1] = flipsY(f, pattern.contList[4*i], pattern.contList[4*i+1], pattern.sizeX-1,pattern.sizeY-1); 
    384398      newContList[4*i+2] = pattern.contList[4*i+2]; 
    385399      newContList[4*i+3] = '/'; 
     
    413427      for(int i=0; i<pattern.sizeX; i++) { 
    414428        for(int j=0; j<pattern.sizeY; j++) { 
    415           newInitialPos[flipsX(f,i,j,boardsize-1,boardsize-1) + pattern.sizeX*flipsY(f,i,j,boardsize-1,boardsize-1)] = 
     429          newInitialPos[flipsX(f,i,j,pattern.sizeX-1,pattern.sizeY-1) + pattern.sizeX*flipsY(f,i,j,pattern.sizeX-1,pattern.sizeY-1)] = 
    416430            invert(pattern.getInitial(i, j)); 
    417431        } 
     
    420434      char* newContList = new char[pattern.lenContList*4]; 
    421435      for(int i=0; i<pattern.lenContList; i++) { 
    422         newContList[4*i] = flipsX(f, pattern.contList[4*i], pattern.contList[4*i+1], boardsize-1,boardsize-1); 
    423         newContList[4*i+1] = flipsY(f, pattern.contList[4*i], pattern.contList[4*i+1], boardsize-1,boardsize-1); 
     436        newContList[4*i] = flipsX(f, pattern.contList[4*i], pattern.contList[4*i+1], pattern.sizeX-1,pattern.sizeY-1); 
     437        newContList[4*i+1] = flipsY(f, pattern.contList[4*i], pattern.contList[4*i+1], pattern.sizeX-1,pattern.sizeY-1); 
    424438        newContList[4*i+2] = invert(pattern.contList[4*i+2]); 
    425439        newContList[4*i+3] = '/'; 
  • 06/devel/pattern.h

    r133 r136  
    5454 
    5555  PatternList(Pattern p, int fColor, int nMove); 
     56  PatternList(const PatternList& pl); 
     57  PatternList& operator=(const PatternList& pl); 
    5658 
    5759  char invertColor(char co); 
  • 06/devel/patternPY.py

    r119 r136  
    9191        self.right = right 
    9292        self.bottom = bottom 
    93         self.anchors = [(left, top), (right, bottom)] 
     93        # self.anchors = [(left, top), (right, bottom)] 
    9494        # self.anchors.sort()               # important for __cmp__ (but already sorted ...) 
    9595 
     
    192192            finv = Pattern.flips[PatternInvFlip(ii)] 
    193193             
    194             newA = [] 
    195  
    196             a = [(self.pattern.anchors[0][0],self.pattern.anchors[0][1]), 
    197                  (self.pattern.anchors[1][0],self.pattern.anchors[0][1]), 
    198                  (self.pattern.anchors[1][0],self.pattern.anchors[1][1]), 
    199                  (self.pattern.anchors[0][0],self.pattern.anchors[1][1])] 
     194##             newA = [] 
     195 
     196##             a = [(self.pattern.anchors[0][0],self.pattern.anchors[0][1]), 
     197##                  (self.pattern.anchors[1][0],self.pattern.anchors[0][1]), 
     198##                  (self.pattern.anchors[1][0],self.pattern.anchors[1][1]), 
     199##                  (self.pattern.anchors[0][0],self.pattern.anchors[1][1])] 
    200200             
    201             for anchor in a: 
    202                 extr = [ f(anchor[0], anchor[1], self.boardsize-1, self.boardsize-1), 
    203                          f(anchor[0]+self.pattern.sizeX-1, anchor[1], self.boardsize-1, self.boardsize-1), 
    204                          f(anchor[0], anchor[1]+self.pattern.sizeY-1, self.boardsize-1, self.boardsize-1), 
    205                          f(anchor[0]+self.pattern.sizeX-1, anchor[1]+self.pattern.sizeY-1, 
    206                            self.boardsize-1, self.boardsize-1) ] 
    207  
    208                 extr.sort() 
    209                 newA.append(extr[0]) 
     201##             for anchor in a: 
     202##                 extr = [ f(anchor[0], anchor[1], self.boardsize-1, self.boardsize-1), 
     203##                          f(anchor[0]+self.pattern.sizeX-1, anchor[1], self.boardsize-1, self.boardsize-1), 
     204##                          f(anchor[0], anchor[1]+self.pattern.sizeY-1, self.boardsize-1, self.boardsize-1), 
     205##                          f(anchor[0]+self.pattern.sizeX-1, anchor[1]+self.pattern.sizeY-1, 
     206##                            self.boardsize-1, self.boardsize-1) ] 
     207 
     208##                 extr.sort() 
     209##                 newA.append(extr[0]) 
    210210                 
    211             newA.sort() 
    212             newAnchors = [newA[0], newA[3]] 
     211##             newA.sort() 
     212##             newAnchors = [newA[0], newA[3]] 
     213             
     214##             newSizeL = [ f(0,0,1,1), f(0,1,1,1) ] 
     215##             newSizeL.sort() 
     216##             if newSizeL[1][0] == newSizeL[0][0]: 
     217##                 newSizeX = self.pattern.sizeX 
     218##                 newSizeY = self.pattern.sizeY 
     219##             else: 
     220##                 newSizeX = self.pattern.sizeY 
     221##                 newSizeY = self.pattern.sizeX 
     222 
     223            newLeft = min(flips[f](left,top,self.boardsize-1,self.boardsize-1)[0], 
     224                          flips[f](right,bottom,self.boardsize-1,self.boardsize-1)[0]) 
     225            newRight = max(flips[f](left,top,self.boardsize-1,self.boardsize-1)[0], 
     226                           flips[f](right,bottom,self.boardsize-1,self.boardsize-1)[0]) 
     227            newTop = min(flips[f](left,top,self.boardsize-1,self.boardsize-1)[1], 
     228                         flips[f](right,bottom,self.boardsize-1,self.boardsize-1)[1]) 
     229            newBottom = max(flips[f](left,top,self.boardsize-1,self.boardsize-1)[1], 
     230                            flips[f](right,bottom,self.boardsize-1,self.boardsize-1)[1]) 
     231 
     232            newSizeX = max(flips[f](0,0,sizeX,sizeY)[0], flips[f](sizeX,sizeY,sizeX,sizeY)[0]); 
     233            newSizeY = max(flips[f](0,0,sizeX,sizeY)[1], flips[f](sizeX,sizeY,sizeX,sizeY)[1]); 
     234 
     235            # print self.pattern.sizeX, self.pattern.sizeY, newSizeX, newSizeY 
    213236 
    214237            newPd = {} 
     
    228251            newContList = join(ncl, '') 
    229252 
    230             newSizeL = [ f(0,0,1,1), f(0,1,1,1) ] 
    231             newSizeL.sort() 
    232             if newSizeL[1][0] == newSizeL[0][0]: 
    233                 newSizeX = self.pattern.sizeX 
    234                 newSizeY = self.pattern.sizeY 
    235             else: 
    236                 newSizeX = self.pattern.sizeY 
    237                 newSizeY = self.pattern.sizeX 
    238  
    239             # print self.pattern.sizeX, self.pattern.sizeY, newSizeX, newSizeY 
    240  
    241253            npdl = [] 
    242254 
     
    246258            newPdString = join(npdl, '') 
    247259                               
    248             pNew = Pattern(newAnchors[0][0], newAnchors[1][0], newAnchors[0][1], newAnchors[1][1]
     260            pNew = Pattern(newLeft, newRight, newTop, newBottom
    249261                           newSizeX, newSizeY, 
    250262                           newPdString, newContList, self.pattern.lenContList, self.pattern.moveOne) 
     
    271283                newContList1 = join([t[0]+t[1]+self.invertColor(t[2])+'/' for t in ncl], '') 
    272284                 
    273                 pNew1 = Pattern(newAnchors[0][0], newAnchors[1][0], newAnchors[0][1], newAnchors[1][1]
     285                pNew1 = Pattern(newLeft, newRight, newTop, newBottom
    274286                                newSizeX, newSizeY, 
    275287                                newPd1String, newContList1, self.pattern.lenContList, self.pattern.moveTwo)