📄 group__mac.html
字号:
<td class="md" nowrap valign="top"> #define BOARD_CORRECT_TERMINAL_NODES</td> <td class="md" valign="top">( </td> </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> board->n_nodes--; </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>node counter correction for terminal nodes </td> </tr></table><a class="anchor" name="ga33" doxytag="solver.c::BOARD_COUNT_FLIPS_4" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_COUNT_FLIPS_4</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">dir </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (square[dir] == o) { \ <span class="keywordflow">if</span> (square[2 * dir] == p) n_flips++; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[2 * dir] == o) { \ <span class="keywordflow">if</span> (square[3 * dir] == p) n_flips += 2; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[3 * dir] == o) { \ <span class="keywordflow">if</span> (square[4 * dir] == p) n_flips += 3; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[4 * dir] == o \ && square[5 * dir] == p) n_flips += 4; \ }}}</pre></div>macro to count (at most 4) discs flipped along a direction </td> </tr></table><a class="anchor" name="ga32" doxytag="solver.c::BOARD_COUNT_FLIPS_6" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_COUNT_FLIPS_6</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">dir </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (square[dir] == o) { \ <span class="keywordflow">if</span> (square[2 * dir] == p) n_flips++; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[2 * dir] == o) { \ <span class="keywordflow">if</span> (square[3 * dir] == p) n_flips += 2; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[3 * dir] == o) { \ <span class="keywordflow">if</span> (square[4 * dir] == p) n_flips += 3; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[4 * dir] == o) { \ <span class="keywordflow">if</span> (square[5 * dir] == p) n_flips += 4; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[5 * dir] == o) { \ <span class="keywordflow">if</span> (square[6 * dir] == p) n_flips += 5; \ <span class="keywordflow">else</span> <span class="keywordflow">if</span> (square[6 * dir] == o \ && square[7 * dir] == p) n_flips += 6; \ }}}}}</pre></div>macro to count (at most 6) discs flipped along a direction </td> </tr></table><a class="anchor" name="ga34" doxytag="solver.c::BOARD_FLIP" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_FLIP</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">dir, <tr> <td></td> <td></td> <td class="md" nowrap>max_flip </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (BOARD_CHECK_MOVE_##max_flip(dir)) { \ <span class="keywordtype">int</span> z = x + (dir); \ <span class="keywordflow">do</span> { \ board->square[z] = p; \ move->position[++move->n] = z; \ z += (dir); \ } <span class="keywordflow">while</span> (board->square[z] == o); \ }</pre></div>macro to flip discs along a direction </td> </tr></table><a class="anchor" name="ga35" doxytag="solver.c::BOARD_GET_MOVE" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_GET_MOVE</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">dir, <tr> <td></td> <td></td> <td class="md" nowrap>max_flip </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre><span class="keywordflow">if</span> (BOARD_CHECK_MOVE_##max_flip(dir)) { \ <span class="keywordtype">int</span> z = x + (dir); \ <span class="keywordflow">do</span> { \ move->position[++move->n] = z; \ move->hash_code[0] ^= hash_code_flip_disc[z][0]; \ move->hash_code[1] ^= hash_code_flip_disc[z][1]; \ z += (dir); \ } <span class="keywordflow">while</span> (board->square[z] == o); \ }</pre></div>macro to get a move along a direction </td> </tr></table><a class="anchor" name="ga47" doxytag="solver.c::BOARD_LAST_RESTORE_EMPTIES" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_LAST_RESTORE_EMPTIES</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">board, <tr> <td></td> <td></td> <td class="md" nowrap>empties, <tr> <td></td> <td></td> <td class="md" nowrap>x </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre>empties = board->position_to_empties[x]; \ empties->previous->next = empties;</pre></div>macro to restore for the last time the list of empty squares </td> </tr></table><a class="anchor" name="ga46" doxytag="solver.c::BOARD_LAST_UPDATE_EMPTIES" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_LAST_UPDATE_EMPTIES</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">board, <tr> <td></td> <td></td> <td class="md" nowrap>empties, <tr> <td></td> <td></td> <td class="md" nowrap>x </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre>empties = board->position_to_empties[x]; \ empties->previous->next = empties->next;</pre></div>macro to update for the last time the list of empty squares </td> </tr></table><a class="anchor" name="ga41" doxytag="solver.c::BOARD_RESTORE_DISCS" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_RESTORE_DISCS</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">board, <tr> <td></td> <td></td> <td class="md" nowrap>n_flips </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre>board->n_discs[(<span class="keywordtype">int</span>)p] -= n_flips + 1; \ board->n_discs[(<span class="keywordtype">int</span>)o] += n_flips; \ board->n_empties++;</pre></div> </td> </tr></table><a class="anchor" name="ga45" doxytag="solver.c::BOARD_RESTORE_EMPTIES" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> #define BOARD_RESTORE_EMPTIES</td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">board, <tr> <td></td> <td></td> <td class="md" nowrap>empties, <tr> <td></td> <td></td> <td class="md" nowrap>x </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p><b>Value:</b><div class="fragment"><pre>empties = board->position_to_empties[x]; \ empties->previous->next = empties; \ empties->next->previous = empties;</pre></div>macro to restore the list of empty squares </td> </tr></table><a class="anchor" name="ga49" doxytag="solver.c::BOARD_RESTORE_HASH_CODE" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -