Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar10 / wordle.cpp
diff options
context:
space:
mode:
Commite4e986a69c425fa4a465ac205af531b879ae16ec (patch)
Author
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-12-20 13:55:10 +0200
Committer
 Stoycho Kyosev <stoycho.kk@gmail.com>
2022-12-20 13:55:10 +0200
Files5f982d1d4a8c53934c0c08aebaad0ac7f2f22385 /Seminar10/wordle.cpp
Data-structures-and-algorithms-e4e986a69c425fa4a465ac205af531b879ae16ec.tar
Data-structures-and-algorithms-e4e986a69c425fa4a465ac205af531b879ae16ec.tar.gz
Data-structures-and-algorithms-e4e986a69c425fa4a465ac205af531b879ae16ec.zip
Parent8e550876b5ffb8054acd9598f86da5fe2dc23621 (diff)
Add some more info on map/set
1 files changed, 55 insertions, 0 deletions
-rw-r--r--Seminar10/wordle.cpp55
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<iostream>
+#include<map>
+#include<string>
+
+int determineChar(const std::multimap<char, int>& 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<char, int> 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