Changeset 138
- Timestamp:
- 04/07/04 20:38:35 (5 years ago)
- Files:
-
- 1 modified
-
06/devel/pattern.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
06/devel/pattern.cc
r136 r138 546 546 547 547 int xx = Pattern::flipsX(Pattern::PatternInvFlip(data[index].flip), x, y, boardsize-1, boardsize-1); 548 int yy = Pat tern::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); 549 549 550 550 int XX1 = Pattern::flipsX(Pattern::patternInvFlip(data[index].flip, Xint0, Yint0, boardsize-1, boardsize-1)); … … 588 588 yy += YY; 589 589 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); 592 592 xx = xxN; 593 593 yy = yyN; 594 594 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); 597 597 XX1 = XX1N; 598 598 YY1 = YY1N; 599 599 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); 602 602 XX2 = XX2N; 603 603 YY2 = YY2N; … … 622 622 } 623 623 else 624 return 0,0,0,0;624 return Py_BuildValue("iiii",0,0,0,0); 625 625 } 626 626 else { … … 631 631 else colorSwitch = cSymm; 632 632 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 } 635 642 else { 636 643 if (contLabelsIndex >= len(contLabels)) text = '?'; … … 639 646 contLabelsIndex++; 640 647 } 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 } 652 697 653 698 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 } 657 709 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
