📄 solver_8c.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: solver.c File Reference</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>solver.c File Reference</h1><code>#include <ctype.h></code><br><code>#include <stdlib.h></code><br><code>#include <stdio.h></code><br><code>#include <string.h></code><br><code>#include <time.h></code><br><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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -