From 4b6c1b0e539d9fc37b646af5865b75aaa5b49bfc Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 13 Nov 2024 22:20:30 +0100 Subject: aoc 2015, days 5, 6 and 7 --- 2015/src/day05.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 2015/src/day05.cpp (limited to '2015/src/day05.cpp') diff --git a/2015/src/day05.cpp b/2015/src/day05.cpp new file mode 100644 index 0000000..b88ecf5 --- /dev/null +++ b/2015/src/day05.cpp @@ -0,0 +1,56 @@ +#include +#include +#include +#include +#include +#include + +using namespace std; + +auto +read_file(string_view filename) +{ + fstream input{ filename }; + vector lines; + + for ( string line; getline(input, line); ) { + lines.emplace_back(line); + } + + return lines; +} + +void +part1(const vector& lines) +{ + const regex re1("(.*[aeiou]){3}"); + const regex re2("(.)\\1"); + const regex re3("(ab|cd|pq|xy)"); + + auto count = count_if(begin(lines), end(lines), [&](auto line) { + return regex_search(line, re1) && regex_search(line, re2) && !regex_search(line, re3); + }); + + cout << count << endl; +} + +void +part2(const vector& lines) +{ + const regex re1("(..).*\\1"); + const regex re2("(.).\\1"); + + auto count = count_if(begin(lines), end(lines), [&](auto line) { + return regex_search(line, re1) && regex_search(line, re2); + }); + + cout << count << endl; +} + +int +main() +{ + auto puzzle = read_file("data/day05.txt"); + part1(puzzle); + part2(puzzle); +} -- cgit v1.3