#include #include #include #include // 6-7 w: wwhmzwtwwk bool Valid1(const std::string &str) { int min, max; char letter; std::string password; auto dash = str.find('-'); auto space = str.find(' '); auto space_two = str.find(' ', space + 1); min = std::atoi(str.substr(0, dash).c_str()); max = std::atoi(str.substr(dash + 1, space).c_str()); letter = str.at(space + 1); password = str.substr(space_two + 1); // std::cout << "min: " << min << std::endl // << "max: " << max << std::endl // << "letter: " << letter << std::endl // << "pass: " << password << std::endl; int total = std::count(password.begin(), password.end(), letter); return (total >= min && total <= max); } bool Valid2(const std::string &str) { int min, max; char letter; std::string password; auto dash = str.find('-'); auto space = str.find(' '); auto space_two = str.find(' ', space + 1); min = std::atoi(str.substr(0, dash).c_str()); max = std::atoi(str.substr(dash + 1, space).c_str()); letter = str.at(space + 1); password = str.substr(space_two + 1); bool a = password[min - 1] == letter; bool b = password[max - 1] == letter; return a != b; } int main() { std::ifstream ifs("data"); if(!ifs.is_open()) return -1; int valid1 = 0; int valid2 = 0; for(std::string line; std::getline(ifs, line); ) { if(Valid1(line)) ++valid1; if(Valid2(line)) ++valid2; } std::cout << valid1 << " valid1 passwords." << std::endl; std::cout << valid2 << " valid2 passwords." << std::endl; return 0; }