dont evaluate state unless search leaf - todo memoize
このコミットが含まれているのは:
コミット
2cb9739671
9
uttt.c
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;
|
||||
|
|
読み込み中…
新しいイシューから参照