depth limit rollouts

このコミットが含まれているのは:
woosh 2023-11-16 07:56:18 +00:00
コミット f7ae29650a
1個のファイルの変更6行の追加3行の削除

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