From 2b0a13f6db744880ed4a3dffe75fa9a334a3ca76 Mon Sep 17 00:00:00 2001 From: Matuush Date: Sat, 2 Nov 2024 16:22:05 +0100 Subject: [PATCH] Added guess response --- main.cpp | 20 +++++++++++++++++--- validate.hpp | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 validate.hpp diff --git a/main.cpp b/main.cpp index 137dc78..141c8b1 100644 --- a/main.cpp +++ b/main.cpp @@ -1,13 +1,17 @@ #include #include +#include +#include "solver.hpp" +#include "gen.hpp" using std::cout; using std::cin; using std::string; +using std::vector; int main(void) { - // Taking problem parameters + // Take game parameters cout << "Length of sequence : "; int N; cin >> N; @@ -17,10 +21,20 @@ int main(void) { cout << "Who plays [human/bot] : "; string player; cin >> player; - string opponent = "random"; + string gen = "random"; if(player == "bot") { cout << "Who generates the sequence [random/human]: "; - cin >> opponent; + cin >> gen; + } + + // Generate the sequence + auto sequence = vector(N, 0); + if(gen == "random") + sequence = generate(N, M); + else if(gen == "human") { + cout << "Enter " << N << " space-separated colors from 0 to " << M-1 << std::endl; + for(int n = 0; n < N; n++) + cin >> sequence[n]; } return 0; diff --git a/validate.hpp b/validate.hpp new file mode 100644 index 0000000..892be0a --- /dev/null +++ b/validate.hpp @@ -0,0 +1,37 @@ +#pragma once +#include + +using std::vector; + +vector validate(vector sequence, vector guess) { + int S = sequence.size(); + + // Return values + int r_correct = 0; + int r_somewhere = 0; + + // Find and remove correct values + for(int i = 0; i < S; i++) { + if(sequence[i] == guess[i]) { + r_correct++; + sequence.erase(sequence.begin()+i); + guess.erase(guess.begin()+i); + i--; + S--; + } + } + + // Find values that are there somewhere + for(int col : guess) { + for(int i = 0; i < S; i++) { + if(sequence[i] == col) { + r_somewhere++; + sequence.erase(sequence.begin()+i); + S--; + break; + } + } + } + + return {r_somewhere, r_correct}; +}