diff --git a/solver.cpp b/solver.cpp index 281c766..9300564 100644 --- a/solver.cpp +++ b/solver.cpp @@ -34,7 +34,19 @@ void Solver::learn(vector guess, Response response) { int Solver::get_weight(vector guess) { return 0; } -// TODO -Weighed_guess Solver::minimax(vector> *possibilities, vector *chosen, int index) { - return {0, {}}; +Weighed_guess Solver::minimax(vector carry) { + if(carry.size() == N) + return {get_weight(carry), carry}; + + Weighed_guess best = {-1, {}}; + for(int col = 0; col < M; col++) { + carry.push_back(col); + + Weighed_guess next = minimax(carry); + if(next.weight > best.weight) + best = next; + + carry.pop_back(); + } + return best; } diff --git a/solver.hpp b/solver.hpp index e71e07c..e050eb9 100644 --- a/solver.hpp +++ b/solver.hpp @@ -22,5 +22,5 @@ public: private: void generate_set(vector carry); int get_weight(vector guess); - Weighed_guess minimax(vector> *possibilities, vector *chosen, int index); + Weighed_guess minimax(vector carry); };