Changeset 138

Show
Ignore:
Timestamp:
04/07/04 20:38:35 (5 years ago)
Author:
ug
Message:

Continued transcoding patternPY.py

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • 06/devel/pattern.cc

    r136 r138  
    546546 
    547547  int xx = Pattern::flipsX(Pattern::PatternInvFlip(data[index].flip), x, y, boardsize-1, boardsize-1); 
    548   int yy = Pattern::flipsY(Pattern::PatternInvFlip(data[index].flip), x, y, boardsize-1, boardsize-1); 
     548  int yy = Patern::flipsY(Pattern::PatternInvFlip(data[index].flip), x, y, boardsize-1, boardsize-1); 
    549549 
    550550  int XX1 = Pattern::flipsX(Pattern::patternInvFlip(data[index].flip, Xint0, Yint0, boardsize-1, boardsize-1)); 
     
    588588        yy += YY; 
    589589 
    590         xxN = Pattern::flipsX(symmetries.special, xx, yy); 
    591         yyN = Pattern::flipsY(symmetries.special, xx, yy); 
     590        xxN = Pattern::flipsX(symmetries.special, xx, yy, boardsize-1, boardsize-1); 
     591        yyN = Pattern::flipsY(symmetries.special, xx, yy, boardsize-1, boardsize-1); 
    592592        xx = xxN; 
    593593        yy = yyN; 
    594594 
    595         int XX1N = Pattern::flipsX(symmetries.special, XX1, YY1); 
    596         int YY1N = Pattern::flipsY(symmetries.special, XX1, YY1); 
     595        int XX1N = Pattern::flipsX(symmetries.special, XX1, YY1, boardsize-1, boardsize-1); 
     596        int YY1N = Pattern::flipsY(symmetries.special, XX1, YY1, boardsize-1, boardsize-1); 
    597597        XX1 = XX1N; 
    598598        YY1 = YY1N; 
    599599 
    600         int XX2N = Pattern::flipsX(symmetries.special, XX2, YY2); 
    601         int YY2N = Pattern::flipsY(symmetries.special, XX2, YY2); 
     600        int XX2N = Pattern::flipsX(symmetries.special, XX2, YY2, boardsize-1); 
     601        int YY2N = Pattern::flipsY(symmetries.special, XX2, YY2, boardsize-1); 
    602602        XX2 = XX2N; 
    603603        YY2 = YY2N; 
     
    622622      } 
    623623      else 
    624         return 0,0,0,0; 
     624        return Py_BuildValue("iiii",0,0,0,0);  
    625625    } 
    626626    else { 
     
    631631  else colorSwitch = cSymm; 
    632632 
    633   if (continuations.has_key((xx, yy))) 
    634     continuations[(xx,yy)][cc] = continuations[(xx,yy)][cc]+1; // FIXME ... 
     633  PyObject* xxyyPY = Py_BuildValue("(ii)", xx, yy); 
     634  PyObject* scxy; 
     635 
     636  if ((scxy = PyDict_GetItem(continuations, xxyy))) { 
     637    PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, cc))+1); 
     638    PyDict_SetItemString(scxy, cc, temp); 
     639    Py_DECREF(temp); 
     640    text = PyString_AsString(PyDict_GetItemString(scxy, "N"))[0]; 
     641  } 
    635642  else { 
    636643    if (contLabelsIndex >= len(contLabels)) text = '?'; 
     
    639646      contLabelsIndex++; 
    640647    } 
    641     if (cc == 'B')  
    642       continuations[(xx,yy)] = {'B':1, 'W':0, 
    643                                 'tB':0, 'tW':0, 
    644                                 'wB':0,'lB':0,'wW':0,'lW':0, 
    645                                 'N': text}; 
    646     else 
    647       continuations[(xx,yy)] = {'B':0, 'W':1, 'tB':0, 'tW':0, 'wB':0, 'lB':0, 
    648                                 'wW':0, 'lW':0, 'N': text}; 
    649                            
    650     if (foundWhere != counter && foundWhere != counter+1)  
    651       continuations[(xx,yy)]['t'+cc] += 1; 
     648 
     649    if (strcmp(cc, "B")==0) { 
     650      scxy = PyDict_New(); 
     651      PyObject* Py0 = PyInt_FromLong(0); 
     652      PyObject *Py1 = PyInt_FromLong(1); 
     653      PyDict_SetItemString(scxy, "B", Py1); 
     654      PyDict_SetItemString(scxy, "W", Py0); 
     655      PyDict_SetItemString(scxy, "tB", Py0); 
     656      PyDict_SetItemString(scxy, "tW", Py0); 
     657      PyDict_SetItemString(scxy, "wB", Py0); 
     658      PyDict_SetItemString(scxy, "lB", Py0); 
     659      PyDict_SetItemString(scxy, "wW", Py0); 
     660      PyDict_SetItemString(scxy, "lW", Py0); 
     661      PyDict_SetItemString(scxy, "N", PyString_FromStringAndSize(&text, 1)); 
     662      Py_DECREF(Py0); 
     663      Py_DECREF(Py1); 
     664      PyDict_SetItem(continuations, xxyyPY, scxy); 
     665      Py_DECREF(scxy); 
     666    } 
     667    else { 
     668      scxy = PyDict_New(); 
     669      PyObject *Py0 = PyInt_FromLong(0); 
     670      PyObject *Py1 = PyInt_FromLong(1); 
     671      PyDict_SetItemString(scxy, "B", Py0); 
     672      PyDict_SetItemString(scxy, "W", Py1); 
     673      PyDict_SetItemString(scxy, "tB", Py0); 
     674      PyDict_SetItemString(scxy, "tW", Py0); 
     675      PyDict_SetItemString(scxy, "wB", Py0); 
     676      PyDict_SetItemString(scxy, "lB", Py0); 
     677      PyDict_SetItemString(scxy, "wW", Py0); 
     678      PyDict_SetItemString(scxy, "lW", Py0); 
     679      PyDict_SetItemString(scxy, "N", PyString_FromStringAndSize(&text, 1)); 
     680      Py_DECREF(Py0); 
     681      Py_DECREF(Py1); 
     682      PyDict_SetItem(continuations, xxyyPY, scxy); 
     683      Py_DECREF(scxy); 
     684    } 
     685 
     686    Py_DECREF(xxyyPY); 
     687 
     688    char tcc[3]; tcc[0]='t'; tcc[1]=cc; tcc[2]=0; 
     689    char lcc[3]; lcc[0]='l'; lcc[1]=cc; lcc[2]=0; 
     690    char wcc[3]; wcc[0]='w'; wcc[1]=cc; wcc[2]=0; 
     691 
     692    if (foundWhere != counter && foundWhere != counter+1) { 
     693      PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, tcc))+1); 
     694      PyDict_SetItemString(scxy, tcc, temp); 
     695      Py_DECREF(temp); 
     696    } 
    652697 
    653698    if (winner == 'B') 
    654       if (!(data[index].colorSwitch || colorSwitch)) 
    655         continuations[(xx,yy)]['w'+cc] += 1; 
    656       else continuations[(xx,yy)]['l'+cc] += 1; 
     699      if (!(data[index].colorSwitch || colorSwitch)) { 
     700        PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, wcc))+1); 
     701        PyDict_SetItemString(scxy, wcc, temp); 
     702        Py_DECREF(temp); 
     703      } 
     704      else { 
     705        PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, lcc))+1); 
     706        PyDict_SetItemString(scxy, lcc, temp); 
     707        Py_DECREF(temp); 
     708      } 
    657709    else if (winner == 'W') 
    658       if (!(self.data[index].colorSwitch or colorSwitch)) 
    659         continuations[(xx,yy)]['l'+cc] += 1; 
    660       else continuations[(xx,yy)]['w'+cc] += 1; 
    661   } 
    662   return 1, continuations[(xx,yy)]['N'], contLabelsIndex, (self.data[index].colorSwitch or colorSwitch) 
    663 } 
    664  
     710      if (!(data[index].colorSwitch || colorSwitch)) { 
     711        PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, lcc))+1); 
     712        PyDict_SetItemString(scxy, lcc, temp); 
     713        Py_DECREF(temp); 
     714      } 
     715      else { 
     716        PyObject *temp = PyInt_FromLong(PyInt_AsLong(PyDict_GetItemString(scxy, wcc))+1); 
     717        PyDict_SetItemString(scxy, wcc, temp); 
     718        Py_DECREF(temp); 
     719      } 
     720  } 
     721  return Py_BuildValue("icii", 1, continuations[(xx,yy)]['N'], contLabelsIndex,  
     722                       (self.data[index].colorSwitch or colorSwitch)); 
     723} 
     724