Untitled

 avatar
unknown
plain_text
2 years ago
709 B
6
Indexable
int minimax(State *state, int depth, int maximize){
  auto actions = state->legal_actions;
  int val = 0;
  if(depth == 0){
    return state -> evaluate();
  }
  if(maximize){
    val = INT_MIN;
    for(size_t i = 0; i < actions.size(); i++){
      State *s = state -> next_state(actions[i]);
      int tmp = minimax(s, depth - 1, 0);
      if(tmp > val) val = tmp;
      if(val == INT_MAX) return val; 
    }
  }else if(!maximize){
    val = INT_MAX;
    for(size_t i = 0; i < actions.size(); i++){
      State *s = state -> next_state(actions[i]);
      int tmp = minimax(s, depth - 1, 1);
      if(tmp < val) val = tmp;
      if(val == INT_MIN) return val;
    }
  }
  return val;
}
Editor is loading...