diff options
Diffstat (limited to 'src/pptdb.c')
| -rw-r--r-- | src/pptdb.c | 65 |
1 files changed, 38 insertions, 27 deletions
diff --git a/src/pptdb.c b/src/pptdb.c index 92155b5..7179ab0 100644 --- a/src/pptdb.c +++ b/src/pptdb.c @@ -17,11 +17,11 @@ write_input(void) { /* fprintf(training_fh,"%d,",current_colour == C_BLACK); */ // Two numbers for flats remaining - /* fprintf(training_fh,"%.6f,%.6f,", */ - /* (float)(white_count & 127)/max_flats, */ - /* (float)(black_count & 127)/max_flats); */ - // Two data points for each square - /* float t; uint16_t mask; */ + /* + * fprintf(training_fh,"%.6f,%.6f,", + * (float)(white_count & 127)/max_flats, + * (float)(black_count & 127)/max_flats); + */ float val; uint16_t mask = 1; @@ -48,21 +48,22 @@ write_input(void) { mask <<= 1; } + /* - float t; - for (int k = 0; k < board_size * board_size; k++) { - // stacks encoded as balanced ternary - const int h = COUNT_AT(k); - t = 0; - mask = 1<<h; - for (int j = 1; j < h; j++) { - t += (colours[k] & mask) ? +1 : -1; - t /= 3.0; - mask >>=1; - } - fprintf(training_fh,"%.8f,",2*t); - } - */ + * float t; + * for (int k = 0; k < board_size * board_size; k++) { + * // stacks encoded as balanced ternary + * const int h = COUNT_AT(k); + * t = 0; + * mask = 1<<h; + * for (int j = 1; j < h; j++) { + * t += (colours[k] & mask) ? +1 : -1; + * t /= 3.0; + * mask >>=1; + * } + * fprintf(training_fh,"%.8f,",2*t); + * } + */ } @@ -141,7 +142,8 @@ main(int argc, char **argv) { enum E_RESULT r; enum WIN_TYPE win; uint32_t games = 0, overflow=0, illegal = 0; - uint32_t road_wins=0, flat_wins=0, road_turns=0, flat_turns=0; + uint32_t road_wins=0, flat_wins=0, road_turns=0, flat_turns=0, + white_wins = 0, black_wins = 0; for (int k = 0; k < 16; k++) heights[k] = 0; @@ -171,10 +173,10 @@ main(int argc, char **argv) { } /* - for (int k = 0; k < size*size; k++) { - fprintf(training_fh,"\"BT %d\",",k); - } - */ + * for (int k = 0; k < size*size; k++) { + * fprintf(training_fh,"\"BT %d\",",k); + * } + */ fputs("\"White win\",\"Black win\"\n",training_fh); } else generate=0; @@ -206,6 +208,10 @@ main(int argc, char **argv) { road_wins++; road_turns += ply/2+1; } + if (win == WIN_FLAT_BLACK || win == WIN_ROAD_BLACK) + black_wins++; + else if (win == WIN_FLAT_WHITE || win == WIN_ROAD_WHITE) + white_wins++; } } games++; @@ -219,9 +225,14 @@ main(int argc, char **argv) { printf("Read %d games\n",games); if (generate==0) { - printf("Illegals: %d\nOverflows: %d\nRoad wins: %d\nFlat wins: %d\n\ -Average turns to road win: %.3f\nAverage turns to flat win: %f\n", - illegal,overflow, road_wins, flat_wins, + printf("Illegals: %d\nOverflows: %d\n\ +Black wins: %.3f%%\n\ +Road wins: %d\nFlat wins: %d\n\ +Average turns to road win: %.3f\n\ +Average turns to flat win: %f\n", + illegal, overflow, + (double)black_wins / (double)(black_wins+white_wins) * 100, + road_wins, flat_wins, (double)(road_turns)/(double)(road_wins), (double)(flat_turns)/(double)(flat_wins)); for (int k = 2; k < 16; k++) { |
