#include #include #include "ordle.h" 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::cout << "File (" << argv[1] << ") loaded. " << candidates.size() << " candidates available.\n"; std::string wrong; letters_and_indices green, yellow; while (!candidates.empty()) { 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); std::cout << "Remaining candidates: " << candidates.size() << "\n"; for (const auto &word : candidates) { std::cout << word << " "; } std::cout << "\n\n"; if (candidates.size() <= 1) break; } if (candidates.empty()) { std::cout << "No solution found.\n"; } else { std::cout << "Solution: " << candidates.front() << "\n"; } return 0; }