From 213209243e13150dbdb4b23f44b437d4da751f92 Mon Sep 17 00:00:00 2001 From: Matuush Date: Fri, 27 Dec 2024 02:27:43 +0100 Subject: [PATCH] Simpler mode for faster decisions --- solver.cpp | 16 +++++++++++++--- solver.hpp | 3 ++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/solver.cpp b/solver.cpp index 2ba4bc5..44a5b3a 100644 --- a/solver.cpp +++ b/solver.cpp @@ -18,8 +18,9 @@ Solver::Solver(int _N, int _M) : N(_N), M(_M) { } vector Solver::guess() { - if(possible.size() == pow(M, N)) { - cout << "Picking first\n"; + // First pick + if(first_pick) { + first_pick = false; vector pick(0); int times = N / M + 1; @@ -30,7 +31,7 @@ vector Solver::guess() { return pick; } - return minimax({}).guess; + return choose_possible().guess; } void Solver::learn(vector guess, Response response) { set> next_possible; @@ -72,3 +73,12 @@ Weighed_guess Solver::minimax(vector carry) { } 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; +} diff --git a/solver.hpp b/solver.hpp index 904b36c..5dceed3 100644 --- a/solver.hpp +++ b/solver.hpp @@ -1,6 +1,5 @@ #pragma once #include -#include #include "global.hpp" using std::set; @@ -17,6 +16,7 @@ struct Weighed_guess { class Solver { int N, M; set> possible; + bool first_pick = true; public: Solver(int N, int M); @@ -27,4 +27,5 @@ private: void generate_set(vector carry); int get_weight(vector guess); Weighed_guess minimax(vector carry); + Weighed_guess choose_possible(); };