From e4e986a69c425fa4a465ac205af531b879ae16ec Mon Sep 17 00:00:00 2001 From: Stoycho Kyosev Date: Tue, 20 Dec 2022 13:55:10 +0200 Subject: Add some more info on map/set --- Seminar10/wordle.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 Seminar10/wordle.cpp (limited to 'Seminar10/wordle.cpp') diff --git a/Seminar10/wordle.cpp b/Seminar10/wordle.cpp new file mode 100644 index 0000000..967e807 --- /dev/null +++ b/Seminar10/wordle.cpp @@ -0,0 +1,55 @@ +#include +#include +#include + +int determineChar(const std::multimap& mp, size_t idx, char currChar) { + // find връща end ако не го намери + auto currentIterator = mp.find(currChar); + + if (currentIterator == mp.end()) + return 0; + + // Докато не стигнем края, което е възможно, + // и докато все още сме на този символ + while (currentIterator != mp.end() && currentIterator->first == currChar) { + if (currentIterator->second == idx) + return 2; + ++currentIterator; + } + + return 1; +} + +int main() { + std::string word; + std::cout << "Enter word to guess: " << std::endl; + + std::getline(std::cin, word, '\n'); + std::multimap wordle; + + for (size_t i = 0; i < word.size(); i++) + wordle.insert({ word[i], i }); + + bool guessed = false; + + while (!guessed) { + std::cout << "Enter guess with length: " << wordle.size() << std::endl; + std::getline(std::cin, word, '\n'); + + if (word.length() != wordle.size()) { + std::cout << "Invalid length" << std::endl; + continue; + } + + guessed = true; + + for (size_t i = 0; i < word.size(); i++) { + int result = determineChar(wordle, i, word[i]); + + std::cout << word[i] << " " << result << std::endl; + + if (result != 2) + guessed = false; + } + } +} \ No newline at end of file -- cgit v1.3.1-23-gd82d