Changeset 187

Show
Ignore:
Timestamp:
09/29/06 21:53:24 (2 years ago)
Author:
ug
Message:

Fixed computation of symmetrized Dyer signature.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 06/libkombilo/search.cc

    r186 r187  
    823823                signature[5] = m.y + 97; 
    824824        } 
    825         if (counter==30) { 
     825        if (counter==31) { 
    826826                signature[6] = m.x + 97; 
    827827                signature[7] = m.y + 97; 
    828828        } 
    829         if (counter==50) { 
     829        if (counter==51) { 
    830830                signature[8] = m.x + 97; 
    831831                signature[9] = m.y + 97; 
    832832        } 
    833         if (counter==70) { 
     833        if (counter==71) { 
    834834                signature[10] = m.x + 97; 
    835835                signature[11] = m.y + 97; 
     
    851851void Algo_signature::endgame_process() { 
    852852        // symmetrize signature 
    853         char* max_signature = new char[12]; 
    854         for(int i=0; i<12; i++) max_signature[i] = signature[i]; 
     853        char* min_signature = new char[12]; 
     854        for(int i=0; i<12; i++) min_signature[i] = signature[i]; 
    855855        for (int f=0; f<8; f++) { // for all flips 
    856856                // compute flipped signature 
     
    858858                for(int i=0; i<6; i++) { 
    859859                        if (signature[2*i] == 't') next[2*i] = 't'; 
    860                         else next[2*i] = Pattern::flipsX(f, signature[2*i], signature[2*i+1], boardsize-1, boardsize-1)
     860                        else next[2*i] = Pattern::flipsX(f, signature[2*i]-'a', signature[2*i+1]-'a', boardsize-1, boardsize-1)+'a'
    861861                        if (signature[2*i+1] == 't') next[2*i+1] = 't'; 
    862                         else next[2*i+1] = Pattern::flipsY(f, signature[2*i], signature[2*i+1], boardsize-1, boardsize-1)
     862                        else next[2*i+1] = Pattern::flipsY(f, signature[2*i]-'a', signature[2*i+1]-'a', boardsize-1, boardsize-1)+'a'
    863863                } 
    864                 // if next > max_signature, then swap 
     864                // if next < min_signature, then swap 
    865865                for(int j=0; j<12; j++) { 
    866                         if (next[j] < max_signature[j]) break; 
    867                         if (next[j] > max_signature[j]) { 
     866                        if (next[j] > min_signature[j]) break; 
     867                        if (next[j] < min_signature[j]) { 
    868868                                char* help = next; 
    869                                 next = max_signature; 
    870                                 max_signature = help; 
     869                                next = min_signature; 
     870                                min_signature = help; 
    871871                                break; 
    872872                        } 
     
    875875        } 
    876876        delete [] signature; 
    877         dbinsert1blob(db, "insert into algo_signature (id, signature) values (?,?);", gid, max_signature, 12); 
    878         delete [] max_signature; 
     877        dbinsert1blob(db, "insert into algo_signature (id, signature) values (?,?);", gid, min_signature, 12); 
     878        // for(int i=0; i<12; i++) printf("%c", min_signature[i]); printf("\n"); 
     879        delete [] min_signature; 
    879880} 
    880881