depth limit rollouts
このコミットが含まれているのは:
コミット
f7ae29650a
9
uttt.c
9
uttt.c
|
@ -916,14 +916,15 @@ struct ut_move ut_minimax(int (*value)(const struct ut_state *state), const stru
|
|||
return best_move;
|
||||
}
|
||||
|
||||
#define UT_RDEPTH 1
|
||||
#define UT_RDEPTH 2
|
||||
#define UT_RTURNS 2
|
||||
int ut_rollout(const struct ut_state *state)
|
||||
{
|
||||
|
||||
struct ut_state rstate = *state;
|
||||
int moves = 0;
|
||||
char winner;
|
||||
while((winner = ut_winner(&rstate)) == '\0')
|
||||
while((winner = ut_winner(&rstate)) == '\0' && moves < UT_RTURNS)
|
||||
{
|
||||
if(ut_move(&rstate, &rstate,
|
||||
ut_minimax(ut_value, &rstate, UT_RDEPTH)))
|
||||
|
@ -932,7 +933,9 @@ int ut_rollout(const struct ut_state *state)
|
|||
}
|
||||
moves++;
|
||||
}
|
||||
return (winner == 'X') ? (UT_VALUEMAX - moves) : (winner == 'O') ? (UT_VALUEMIN + moves) : 0;
|
||||
return (winner == 'X') ? (UT_VALUEMAX - moves) :
|
||||
(winner == 'O') ? (UT_VALUEMIN + moves) :
|
||||
(winner == ' ') ? 0 : ut_value(&rstate);
|
||||
}
|
||||
|
||||
#define UT_DEPTH 5
|
||||
|
|
読み込み中…
新しいイシューから参照