|HOW IT WORKS - BRIEF GUIDE TO THIS ENGINE|
|obsah:||flag rules and meta-rules:||page 6/12|
inputs and outputs
first 2 layers
flag rules (1D)
flag combination (2D)
go to page:
The engine is still at the same square ( N ) and has completed a surroundings test according to RCBoard rules.
Now it continues to test the surrounding squares the same way ( N ) but by following different rules:
The engine now doesn't modify square values directly in xRCboard a oRCboard but writes new values to array flagx a flago for later evaluation. These values are a kind of marks at strategically important positions. The engine can change values not just at its current position, bu also values of of free squares ahead, in the search direction.
Moreover, the values written to arrays flagx and flago depend on whether the engine is player one or player two. So the engine can have two different strategies fo both cases.
click here to view image with flag values if engine is player one
click here to view image with flag values if engine is player two
Same as for RCBoard rules, the engine searces the game board in two opposite directions (forward and back), and writes (adds) the values into a helper 2D array. Symmetrical rules 0, 4, 7 and 11a are used only in "forward" direction. For rule 11b the engine in case of symmetry prevents adding the value xnx (1) or ono (1) twice. A distortion can occur with the other rules (the rules can overlap). So when searching in the "back" direction, the engine uses a filter for correcting the written values:
if(flagx > 10 && flagx < 100) flagx = 10;
if(flagx > 110 && flagx < 112) flagx = 101;
if(flagx > 102 && flagx < 201) flagx = 100;
if(flagx > 200 && flagx < 1000) flagx = 101;
if(flagx > 1000 && flagx < 2000) flagx = 1000;
if(flagx > 1999) flagx = 1000;
On the game board, specific specific character structures can occur in one search line (character sequences A, B, C, D in the picture below), which can be composed from Flag Rules. These chaacter groupings have a high strategic significance for the corresponding player:
When the engine is player one ( X ) and finds some of these combinations of characters X and N on the game board, it is very good for it to make its move in the square marked as R in the picture.
The engine will test these Flag (meta) Rule combinations in all 8 directions. If one of them is found, the engine will write into xRCboard a oRCboard values corresponding to whether it's currently player one or two (table in image 004).
For next round of analysis, there are some especially important squares, markes in image 003 as M a CI (xcx, xcx + xnx). So it's the squares that now, after a "there and back" search, have values over 100 in the helper array flatx. So the engine has to stash that information first. Only afterwards can it add all values from the helper array to values with corresponding positions in the work array:
flagx[row][column] = flagx[row][column] + flatx[row][column];
flatx[row][column] = 0; //reset temporary
continue on next page . . .
|go top||independent Machines develop lab (2013)||page 6/12|