Ticket #182: draqo-owl_test_cuts-optimize.diff

File draqo-owl_test_cuts-optimize.diff, 1.9 kB (added by arend, 15 months ago)
  • engine/owl.c

    RCS file: /home/arend/Go/gnugo-rsync/gnugo/engine/owl.c,v
    retrieving revision 1.253
    diff -u -p -r1.253 owl.c
     
    49414941    signed char component[MAX_CUTS]; 
    49424942    signed char component2[BOARDMAX]; 
    49434943    int component_size[MAX_CUTS]; 
     4944    int component_libs[MAX_CUTS]; 
    49444945    int num_components; 
    49454946    int biggest_component = -1; 
    49464947    struct connection_data *conn_data; 
     
    49654966     */ 
    49664967    memset(component2, -1, BOARDMAX); 
    49674968    memset(component_size, 0, sizeof(int) * num_components); 
     4969    memset(component_libs, 0, sizeof(int) * num_components); 
    49684970    conn_data = malloc(sizeof(struct connection_data) * num_components); 
    49694971    for (c_id = 0; c_id < num_components; c_id++) { 
    49704972      signed char this_goal[BOARDMAX]; 
     
    50005002      if (closest_component != -1) { 
    50015003        mark_string(pos, component2, closest_component); 
    50025004        component_size[closest_component] += countstones(pos); 
     5005        component_libs[closest_component] += countlib(pos); 
    50035006      } 
    50045007    } 
    50055008 
    5006     /* Now find the biggest_component. */ 
     5009    /* Now find the biggest_component. If some components have the same 
     5010     * size, one with the fewest number of liberties is chosen. 
     5011     */ 
    50075012    { 
    50085013      int biggest_size = 0; 
     5014      int fewest_libs = (size_t)-1; 
    50095015      for (c_id = 0; c_id < num_components; c_id++) 
    50105016        if (component_size[c_id] > biggest_size) { 
    50115017          biggest_size = component_size[c_id]; 
     5018          fewest_libs = component_libs[c_id]; 
    50125019          biggest_component = c_id; 
    50135020        } 
     5021        else if (component_size[c_id] == biggest_size 
     5022                 && component_libs[c_id] < fewest_libs) { 
     5023            fewest_libs = component_libs[c_id]; 
     5024            biggest_component = c_id; 
     5025        } 
    50145026      gg_assert(biggest_component != -1); 
    50155027    } 
    50165028