diff --git a/main.cc b/main.cc index 6a63614..8db34be 100644 --- a/main.cc +++ b/main.cc @@ -1,3 +1,45 @@ #include +#include +#include "ordle.h" -int main(int argc, char *argv[]) { std::cout << "Hello, ordle!" << std::endl; } +int main(int argc, char *argv[]) { + if (argc < 2) { + std::cerr << "Usage: " << argv[0] << " \n"; + return 1; + } + + std::ifstream file(argv[1]); + if (!file) { + std::cerr << "Could not open file: " << argv[1] << "\n"; + return 1; + } + + auto candidates = read_candidates(file); + std::string wrong; + letters_and_indices green, yellow; + + while (!candidates.empty()) { + std::cout << "Remaining candidates: \n"; + for (const auto &word : candidates) { + std::cout << word << " "; + } + std::cout << "\n\n"; + + auto [new_wrong, new_green, new_yellow] = prompt(); + wrong.append(new_wrong); + green.insert(new_green.begin(), new_green.end()); + yellow.insert(new_yellow.begin(), new_yellow.end()); + + do_filter(candidates, wrong, green, yellow); + + if (candidates.size() <= 1) break; + } + + if (candidates.empty()) { + std::cout << "No solution found.\n"; + } else { + std::cout << "Solution: " << candidates.front() << "\n"; + } + + return 0; +} \ No newline at end of file