Simpler mode for faster decisions
This commit is contained in:
parent
5dbaa7444f
commit
213209243e
2 changed files with 15 additions and 4 deletions
16
solver.cpp
16
solver.cpp
|
@ -18,8 +18,9 @@ Solver::Solver(int _N, int _M) : N(_N), M(_M) {
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<int> Solver::guess() {
|
vector<int> Solver::guess() {
|
||||||
if(possible.size() == pow(M, N)) {
|
// First pick
|
||||||
cout << "Picking first\n";
|
if(first_pick) {
|
||||||
|
first_pick = false;
|
||||||
vector<int> pick(0);
|
vector<int> pick(0);
|
||||||
|
|
||||||
int times = N / M + 1;
|
int times = N / M + 1;
|
||||||
|
@ -30,7 +31,7 @@ vector<int> Solver::guess() {
|
||||||
return pick;
|
return pick;
|
||||||
}
|
}
|
||||||
|
|
||||||
return minimax({}).guess;
|
return choose_possible().guess;
|
||||||
}
|
}
|
||||||
void Solver::learn(vector<int> guess, Response response) {
|
void Solver::learn(vector<int> guess, Response response) {
|
||||||
set<vector<int>> next_possible;
|
set<vector<int>> next_possible;
|
||||||
|
@ -72,3 +73,12 @@ Weighed_guess Solver::minimax(vector<int> carry) {
|
||||||
}
|
}
|
||||||
return best;
|
return best;
|
||||||
}
|
}
|
||||||
|
Weighed_guess Solver::choose_possible() {
|
||||||
|
Weighed_guess best = {-1, {}};
|
||||||
|
for(auto sequence : possible) {
|
||||||
|
Weighed_guess next = {get_weight(sequence), sequence};
|
||||||
|
if(best.weight == -1 || next.weight < best.weight)
|
||||||
|
best = next;
|
||||||
|
}
|
||||||
|
return best;
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <cmath>
|
|
||||||
#include "global.hpp"
|
#include "global.hpp"
|
||||||
|
|
||||||
using std::set;
|
using std::set;
|
||||||
|
@ -17,6 +16,7 @@ struct Weighed_guess {
|
||||||
class Solver {
|
class Solver {
|
||||||
int N, M;
|
int N, M;
|
||||||
set<vector<int>> possible;
|
set<vector<int>> possible;
|
||||||
|
bool first_pick = true;
|
||||||
public:
|
public:
|
||||||
Solver(int N, int M);
|
Solver(int N, int M);
|
||||||
|
|
||||||
|
@ -27,4 +27,5 @@ private:
|
||||||
void generate_set(vector<int> carry);
|
void generate_set(vector<int> carry);
|
||||||
int get_weight(vector<int> guess);
|
int get_weight(vector<int> guess);
|
||||||
Weighed_guess minimax(vector<int> carry);
|
Weighed_guess minimax(vector<int> carry);
|
||||||
|
Weighed_guess choose_possible();
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue