#include #include #include #include #include #include #include using namespace std; namespace { vector read_lines(const filesystem::path& filename) { ifstream file{ filename }; vector lines; for ( string line; getline(file, line); ) { lines.emplace_back(line); } return lines; } vector split(const string& line) { stringstream strm{ line }; vector words; for ( string word; strm >> word; ) { words.emplace_back(word); } return words; } void part1(const vector& lines) { auto num = ranges::count_if(lines, [](const string& line) { auto words = split(line); set set{ words.begin(), words.end() }; return set.size() == words.size(); }); cout << "Part1: " << num << '\n'; } void part2(const vector& lines) { auto num = ranges::count_if(lines, [](const string& line) { auto words = split(line); set set; for ( auto word: words ) { ranges::sort(word); set.insert(word); } return set.size() == words.size(); }); cout << "Part2: " << num << '\n'; } } // namespace int main() { auto lines = read_lines("data/day04.txt"); part1(lines); part2(lines); }