📄 group__mac.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Othello Solver: Macros, constants, globals & declarations</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.5 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div><h1>Macros, constants, globals & declarations</h1><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Data Structures</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structBoard.html">Board</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structHash.html">Hash</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structHashEntry.html">HashEntry</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structHashTable.html">HashTable</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structMove.html">Move</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structMoveList.html">MoveList</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>struct </td><td class="memItemRight" valign=bottom><a class="el" href="structSquareList.html">SquareList</a></td></tr><tr><td colspan=2><br><h2>Defines</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga12">EMPTIES_DEEP_TO_SHALLOW_SEARCH</a> 7</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga13">USE_HASH_TABLE</a> 1</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga14">USE_ENHANCED_TRANSPOSITION_CUTOFF</a> (1 && USE_HASH_TABLE)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga15">PLAY_ODD_SQUARE_FIRST</a> 1</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga16">PLAY_FAST_SUBTREE_FIRST</a> 1</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga17">PLAY_STABLEST_SUBTREE</a> (1 && PLAY_FAST_SUBTREE_FIRST)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga18">PLAY_BEST_MOVE_IN_MEMORY_FIRST</a> (1 && USE_HASH_TABLE)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga19">USE_PRESORTED_SQUARES</a> 1</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga20">COUNT_NODES</a> 3</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga21">INF_SCORE</a> 127</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga22">BOARD_SIZE</a> 91</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga23">MAX_MOVE</a> 32</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga24">MAX_FLIP</a> 20</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga25">MAX_SCORE</a> 64</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga26">BOARD_UPDATE_INTERNAL_NODES</a>() board->n_nodes++;</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga27">BOARD_UPDATE_TERMINAL_NODES</a>() board->n_nodes++;</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga28">BOARD_CORRECT_TERMINAL_NODES</a>() board->n_nodes--;</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga29">BOARD_UPDATE_ALL_NODES</a>() board->n_nodes++</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga30">BOARD_CHECK_MOVE_6</a>(dir)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga31">BOARD_CHECK_MOVE_4</a>(dir)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga32">BOARD_COUNT_FLIPS_6</a>(dir)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga33">BOARD_COUNT_FLIPS_4</a>(dir)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga34">BOARD_FLIP</a>(dir, max_flip)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga35">BOARD_GET_MOVE</a>(dir, max_flip)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga36">BOARD_UPDATE_SQUARE</a>(board, move)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga37">BOARD_RESTORE_SQUARE</a>(board, move)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga38">BOARD_UPDATE_PLAYER</a>(board) (board->player = o)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga39">BOARD_RESTORE_PLAYER</a>(board) (board->player = p)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga40">BOARD_UPDATE_DISCS</a>(board, n_flips)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga41">BOARD_RESTORE_DISCS</a>(board, n_flips)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga42">BOARD_UPDATE_PARITY</a>(board, x) (board->parity[<a class="el" href="group__mac.html#ga1">QUADRANT_ID</a>[x]] ^= 1)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga43">BOARD_RESTORE_PARITY</a>(board, x) (board->parity[<a class="el" href="group__mac.html#ga1">QUADRANT_ID</a>[x]] ^= 1)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga44">BOARD_UPDATE_EMPTIES</a>(board, empties, x)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga45">BOARD_RESTORE_EMPTIES</a>(board, empties, x)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga46">BOARD_LAST_UPDATE_EMPTIES</a>(board, empties, x)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga47">BOARD_LAST_RESTORE_EMPTIES</a>(board, empties, x)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga48">BOARD_UPDATE_HASH_CODE</a>(board, code)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga49">BOARD_RESTORE_HASH_CODE</a>(board, code)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga50">OPPONENT</a>(p) ((p) ^ 1)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga51">HASH_TABLE_OK</a>(hash_table) (hash_table->hash_mask != 0)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga52">TICK_TO_H</a>(t) (int)((t) / 3600 / CLOCKS_PER_SEC)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga53">TICK_TO_M</a>(t) (int)(((t) / 60 / CLOCKS_PER_SEC) % 60)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga54">TICK_TO_S</a>(t) (int)(((t) / CLOCKS_PER_SEC) % 60)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>#define </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga55">TICK_TO_DS</a>(t) (int)(((t) / (CLOCKS_PER_SEC / 10)) % 10)</td></tr><tr><td colspan=2><br><h2>Typedefs</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structMove.html">Move</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga5">Move</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structSquareList.html">SquareList</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga6">SquareList</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structMoveList.html">MoveList</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga7">MoveList</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structBoard.html">Board</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga8">Board</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structHash.html">Hash</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga9">Hash</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structHashEntry.html">HashEntry</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga10">HashEntry</a></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="structHashTable.html">HashTable</a> </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga11">HashTable</a></td></tr><tr><td colspan=2><br><h2>Enumerations</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <br> <a class="el" href="group__mac.html#gga56a56">NOMOVE</a> = 0, <a class="el" href="group__mac.html#gga56a57">PASS</a>, <a class="el" href="group__mac.html#gga56a58">A1</a> = 10, <a class="el" href="group__mac.html#gga56a59">B1</a>, <br> <a class="el" href="group__mac.html#gga56a60">C1</a>, <a class="el" href="group__mac.html#gga56a61">D1</a>, <a class="el" href="group__mac.html#gga56a62">E1</a>, <a class="el" href="group__mac.html#gga56a63">F1</a>, <br> <a class="el" href="group__mac.html#gga56a64">G1</a>, <a class="el" href="group__mac.html#gga56a65">H1</a>, <a class="el" href="group__mac.html#gga56a66">A2</a> = 19, <a class="el" href="group__mac.html#gga56a67">B2</a>, <br> <a class="el" href="group__mac.html#gga56a68">C2</a>, <a class="el" href="group__mac.html#gga56a69">D2</a>, <a class="el" href="group__mac.html#gga56a70">E2</a>, <a class="el" href="group__mac.html#gga56a71">F2</a>, <br> <a class="el" href="group__mac.html#gga56a72">G2</a>, <a class="el" href="group__mac.html#gga56a73">H2</a>, <a class="el" href="group__mac.html#gga56a74">A3</a> = 28, <a class="el" href="group__mac.html#gga56a75">B3</a>, <br> <a class="el" href="group__mac.html#gga56a76">C3</a>, <a class="el" href="group__mac.html#gga56a77">D3</a>, <a class="el" href="group__mac.html#gga56a78">E3</a>, <a class="el" href="group__mac.html#gga56a79">F3</a>, <br> <a class="el" href="group__mac.html#gga56a80">G3</a>, <a class="el" href="group__mac.html#gga56a81">H3</a>, <a class="el" href="group__mac.html#gga56a82">A4</a> = 37, <a class="el" href="group__mac.html#gga56a83">B4</a>, <br> <a class="el" href="group__mac.html#gga56a84">C4</a>, <a class="el" href="group__mac.html#gga56a85">D4</a>, <a class="el" href="group__mac.html#gga56a86">E4</a>, <a class="el" href="group__mac.html#gga56a87">F4</a>, <br> <a class="el" href="group__mac.html#gga56a88">G4</a>, <a class="el" href="group__mac.html#gga56a89">H4</a>, <a class="el" href="group__mac.html#gga56a90">A5</a> = 46, <a class="el" href="group__mac.html#gga56a91">B5</a>, <br> <a class="el" href="group__mac.html#gga56a92">C5</a>, <a class="el" href="group__mac.html#gga56a93">D5</a>, <a class="el" href="group__mac.html#gga56a94">E5</a>, <a class="el" href="group__mac.html#gga56a95">F5</a>, <br> <a class="el" href="group__mac.html#gga56a96">G5</a>, <a class="el" href="group__mac.html#gga56a97">H5</a>, <a class="el" href="group__mac.html#gga56a98">A6</a> = 55, <a class="el" href="group__mac.html#gga56a99">B6</a>, <br> <a class="el" href="group__mac.html#gga56a100">C6</a>, <a class="el" href="group__mac.html#gga56a101">D6</a>, <a class="el" href="group__mac.html#gga56a102">E6</a>, <a class="el" href="group__mac.html#gga56a103">F6</a>, <br> <a class="el" href="group__mac.html#gga56a104">G6</a>, <a class="el" href="group__mac.html#gga56a105">H6</a>, <a class="el" href="group__mac.html#gga56a106">A7</a> = 64, <a class="el" href="group__mac.html#gga56a107">B7</a>, <br> <a class="el" href="group__mac.html#gga56a108">C7</a>, <a class="el" href="group__mac.html#gga56a109">D7</a>, <a class="el" href="group__mac.html#gga56a110">E7</a>, <a class="el" href="group__mac.html#gga56a111">F7</a>, <br> <a class="el" href="group__mac.html#gga56a112">G7</a>, <a class="el" href="group__mac.html#gga56a113">H7</a>, <a class="el" href="group__mac.html#gga56a114">A8</a> = 73, <a class="el" href="group__mac.html#gga56a115">B8</a>, <br> <a class="el" href="group__mac.html#gga56a116">C8</a>, <a class="el" href="group__mac.html#gga56a117">D8</a>, <a class="el" href="group__mac.html#gga56a118">E8</a>, <a class="el" href="group__mac.html#gga56a119">F8</a>, <br> <a class="el" href="group__mac.html#gga56a120">G8</a>, <a class="el" href="group__mac.html#gga56a121">H8</a><br> }</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <br> <a class="el" href="group__mac.html#gga57a122">NW</a> = -10, <a class="el" href="group__mac.html#gga57a123">N</a> = -9, <a class="el" href="group__mac.html#gga57a124">NE</a> = -8, <a class="el" href="group__mac.html#gga57a125">W</a> = -1, <br> <a class="el" href="group__mac.html#gga57a126">E</a> = +1, <a class="el" href="group__mac.html#gga57a127">SW</a> = +8, <a class="el" href="group__mac.html#gga57a128">S</a> = +9, <a class="el" href="group__mac.html#gga57a129">SE</a> = +10<br> }</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <a class="el" href="group__mac.html#gga58a130">BLACK</a> = 0, <a class="el" href="group__mac.html#gga58a131">WHITE</a>, <a class="el" href="group__mac.html#gga58a132">EMPTY</a>, <a class="el" href="group__mac.html#gga58a133">OFF_SIDE</a> }</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <a class="el" href="group__mac.html#gga59a134">EXACT_SCORE</a>, <a class="el" href="group__mac.html#gga59a135">WDL_SCORE</a>, <a class="el" href="group__mac.html#gga59a136">WD_SCORE</a>, <a class="el" href="group__mac.html#gga59a137">DL_SCORE</a> }</td></tr><tr><td colspan=2><br><h2>Variables</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const int </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga0">FLIPPING_DIRECTION_ID</a> [BOARD_SIZE]</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>const int </td><td class="memItemRight" valign=bottom><a class="el" href="group__mac.html#ga1">QUADRANT_ID</a> [BOARD_SIZE]</td></tr></table><hr><h2>Define Documentation</h2><a class="anchor" name="ga31" doxytag="solver.c::BOARD_CHECK_MOVE_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_CHECK_MOVE_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>( square[dir] == o && \ ( square[2 * dir] == p || (square[2 * dir] == o && \ ( square[3 * dir] == p || (square[3 * dir] == o && \ ( square[4 * dir] == p || (square[4 * dir] == o && \ square[5 * dir] == p)))))))</pre></div>macros to check if a move (<= 4 flips) is correct along a direction </td> </tr></table><a class="anchor" name="ga30" doxytag="solver.c::BOARD_CHECK_MOVE_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_CHECK_MOVE_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>( square[dir] == o && \ ( square[2 * dir] == p || (square[2 * dir] == o && \ ( square[3 * dir] == p || (square[3 * dir] == o && \ ( square[4 * dir] == p || (square[4 * dir] == o && \ ( square[5 * dir] == p || (square[5 * dir] == o && \ ( square[6 * dir] == p || (square[6 * dir] == o && \ square[7 * dir] == p)))))))))))</pre></div>macros to check if a move (<= 6 flips) is correct along a direction </td> </tr></table><a class="anchor" name="ga28" doxytag="solver.c::BOARD_CORRECT_TERMINAL_NODES" ></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 + -