Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar10 / wordle.cpp
blob: 967e807b66cd79da594c3b6495567ab1767b8d45 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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;
		}
	}
}