Changeset 136
- Timestamp:
- 04/07/04 10:07:46 (5 years ago)
- Files:
-
- 06/devel/pattern.cc (modified) (7 diffs)
- 06/devel/pattern.h (modified) (1 diff)
- 06/devel/patternPY.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
06/devel/pattern.cc
r133 r136 24 24 25 25 #include "pattern.h" 26 27 28 29 // class Symmetries30 31 // dictionary (int i,int j): ((int k,int l), bool colorSwitch)32 26 33 27 Symmetries::Symmetries(int sX, int sY) { … … 52 46 Symmetries::Symmetries(const Symmetries& s) { 53 47 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 59 Symmetries& 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 } 57 77 58 78 void Symmetries::set(int i, int j, int k, int l, int cs) { … … 325 345 } 326 346 347 348 PatternList::PatternList(const PatternList& pl) { 349 printf("OUCH. Copy constructor for PatternList needed.\n"); // FIXME 350 } 351 352 PatternList& PatternList::operator=(const PatternList& pl) { 353 printf("OUCH. operator= for PatternList needed.\n"); // FIXME 354 return *this; 355 } 356 327 357 328 358 char PatternList::invertColor(char co) { … … 347 377 int finv = PatternInvFlip(f); 348 378 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 373 387 char* newInitialPos = new char[pattern.sizeX*pattern.sizeY]; 374 388 for(int i=0; i<pattern.sizeX; i++) { 375 389 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); 377 391 } 378 392 } … … 380 394 char* newContList = new char[pattern.lenContList*4]; 381 395 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); 384 398 newContList[4*i+2] = pattern.contList[4*i+2]; 385 399 newContList[4*i+3] = '/'; … … 413 427 for(int i=0; i<pattern.sizeX; i++) { 414 428 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)] = 416 430 invert(pattern.getInitial(i, j)); 417 431 } … … 420 434 char* newContList = new char[pattern.lenContList*4]; 421 435 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); 424 438 newContList[4*i+2] = invert(pattern.contList[4*i+2]); 425 439 newContList[4*i+3] = '/'; 06/devel/pattern.h
r133 r136 54 54 55 55 PatternList(Pattern p, int fColor, int nMove); 56 PatternList(const PatternList& pl); 57 PatternList& operator=(const PatternList& pl); 56 58 57 59 char invertColor(char co); 06/devel/patternPY.py
r119 r136 91 91 self.right = right 92 92 self.bottom = bottom 93 self.anchors = [(left, top), (right, bottom)]93 # self.anchors = [(left, top), (right, bottom)] 94 94 # self.anchors.sort() # important for __cmp__ (but already sorted ...) 95 95 … … 192 192 finv = Pattern.flips[PatternInvFlip(ii)] 193 193 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])] 200 200 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]) 210 210 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 213 236 214 237 newPd = {} … … 228 251 newContList = join(ncl, '') 229 252 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.sizeX234 newSizeY = self.pattern.sizeY235 else:236 newSizeX = self.pattern.sizeY237 newSizeY = self.pattern.sizeX238 239 # print self.pattern.sizeX, self.pattern.sizeY, newSizeX, newSizeY240 241 253 npdl = [] 242 254 … … 246 258 newPdString = join(npdl, '') 247 259 248 pNew = Pattern(new Anchors[0][0], newAnchors[1][0], newAnchors[0][1], newAnchors[1][1],260 pNew = Pattern(newLeft, newRight, newTop, newBottom, 249 261 newSizeX, newSizeY, 250 262 newPdString, newContList, self.pattern.lenContList, self.pattern.moveOne) … … 271 283 newContList1 = join([t[0]+t[1]+self.invertColor(t[2])+'/' for t in ncl], '') 272 284 273 pNew1 = Pattern(new Anchors[0][0], newAnchors[1][0], newAnchors[0][1], newAnchors[1][1],285 pNew1 = Pattern(newLeft, newRight, newTop, newBottom, 274 286 newSizeX, newSizeY, 275 287 newPd1String, newContList1, self.pattern.lenContList, self.pattern.moveTwo)
