⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group__mac.html

📁 黑白棋终局解算程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
          <td class="md" nowrap valign="top"> #define BOARD_CORRECT_TERMINAL_NODES</td>          <td class="md" valign="top">(&nbsp;</td>&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>&nbsp;&nbsp;&nbsp;board-&gt;n_nodes--;      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </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">(&nbsp;</td>          <td class="md" nowrap valign="top">dir&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </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                   \                         &amp;&amp; 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">(&nbsp;</td>          <td class="md" nowrap valign="top">dir&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </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            \                             &amp;&amp; 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">(&nbsp;</td>          <td class="md" nowrap valign="top">dir,         <tr>          <td></td>          <td></td>          <td class="md" nowrap>max_flip&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </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-&gt;square[z] = p;           \            move-&gt;position[++move-&gt;n] = z;  \            z += (dir);                     \        } <span class="keywordflow">while</span> (board-&gt;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">(&nbsp;</td>          <td class="md" nowrap valign="top">dir,         <tr>          <td></td>          <td></td>          <td class="md" nowrap>max_flip&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </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-&gt;position[++move-&gt;n] = z;                   \            move-&gt;hash_code[0] ^= hash_code_flip_disc[z][0]; \            move-&gt;hash_code[1] ^= hash_code_flip_disc[z][1]; \            z += (dir);                                      \        } <span class="keywordflow">while</span> (board-&gt;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">(&nbsp;</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&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><b>Value:</b><div class="fragment"><pre>empties = board-&gt;position_to_empties[x];          \    empties-&gt;previous-&gt;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">(&nbsp;</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&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><b>Value:</b><div class="fragment"><pre>empties = board-&gt;position_to_empties[x];         \    empties-&gt;previous-&gt;next = empties-&gt;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">(&nbsp;</td>          <td class="md" nowrap valign="top">board,         <tr>          <td></td>          <td></td>          <td class="md" nowrap>n_flips&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><b>Value:</b><div class="fragment"><pre>board-&gt;n_discs[(<span class="keywordtype">int</span>)p] -= n_flips + 1;      \    board-&gt;n_discs[(<span class="keywordtype">int</span>)o] += n_flips;          \    board-&gt;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">(&nbsp;</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&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p><b>Value:</b><div class="fragment"><pre>empties = board-&gt;position_to_empties[x];     \    empties-&gt;previous-&gt;next = empties;           \    empties-&gt;next-&gt;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 + -