dont evaluate state unless search leaf - todo memoize

このコミットが含まれているのは:
woosh 2023-11-16 07:41:47 +00:00
コミット 2cb9739671
1個のファイルの変更7行の追加2行の削除

9
uttt.c
ファイルの表示

@ -860,10 +860,15 @@ int ut_alphabetaq(int (*value)(const struct ut_state *state), const struct ut_st
struct ut_state next;
if(ut_move(&next, state, move)) {return (state->player == 'X') ? UT_VALUEMIN - 1 : UT_VALUEMAX + 1;}
int q = value(&next);
if(depth <= 0 || q <= UT_VALUEMIN || q >= UT_VALUEMAX) {return q;}
char winner = ut_winner(&next);
if(winner != '\0')
{
return (winner == 'X') ? UT_VALUEMAX : (winner == 'O') ? UT_VALUEMIN : 0;
}
else if(depth <= 0) {return value(&next);}
int q;
if(next.player == 'X')
{
q = UT_VALUEMIN - 1;