From ed65c5937950373f96026f476c03bf8984360900 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 14 Nov 2024 16:49:45 +0100 Subject: aoc 2015, day 8 --- 2015/src/day08.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 2015/src/day08.cpp diff --git a/2015/src/day08.cpp b/2015/src/day08.cpp new file mode 100644 index 0000000..9cd6e21 --- /dev/null +++ b/2015/src/day08.cpp @@ -0,0 +1,71 @@ +#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) +{ + auto count = [](const string& line) -> size_t { + size_t length = 0; + auto iter = begin(line); + + while ( iter != end(line) ) { + if ( *iter == '\\' ) { + ++iter; + if ( *iter == '\\' || *iter == '"' ) { + ++length; + ++iter; + } + else if ( *iter == 'x' ) { + ++length; + iter += 3; + } + } + else { + ++iter; + ++length; + } + } + return length - 2; + }; + + size_t sum = 0; + for ( const auto& line: lines ) { + sum += line.size() - count(line); + } + cout << sum << endl; +} + +void +part2(const vector& lines) +{ + long sum = 0; + for ( const auto& line: lines ) { + sum += 2 + count_if(begin(line), end(line), [](auto chr) { return chr == '\\' || chr == '"'; }); + } + cout << sum << endl; +} + +int +main() +{ + auto lines = read_file("data/day08.txt"); + part1(lines); + part2(lines); +} -- cgit v1.3