From 56e890cec0a28c0a485212ccebfaf774235a79a2 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 3 Jan 2024 23:35:54 +0100 Subject: prepare for more puzzles ... :) --- 2020/src/day01.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 2020/src/day01.cpp (limited to '2020/src/day01.cpp') diff --git a/2020/src/day01.cpp b/2020/src/day01.cpp new file mode 100644 index 0000000..d2d8629 --- /dev/null +++ b/2020/src/day01.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include +#include +using namespace std; + +auto +read_file(string_view filename) +{ + fstream input{ filename }; + vector data; + + for ( long value = 0; input >> value; ) { + data.emplace_back(value); + } + + return data; +} + +void +process(const vector& values) +{ + const long year = 2020; + + if (accumulate(values.begin(), values.end(), 0L) == year) { + cout << accumulate(values.begin(), values.end(), 1, multiplies<>()) << endl; + } +} + +void +combination(const vector& values, size_t r) +{ + vector v(values.size()); + fill(v.end() - long(r), v.end(), true); + vector set(r); + do { + set.clear(); + for ( size_t i = 0; i != values.size(); ++i ) { + if ( v[i] ) { + set.emplace_back(values[i]); + } + } + process(set); + } while ( std::next_permutation(v.begin(), v.end()) ); +} + +int +main() +{ + auto values = read_file("data/day01-sample1.txt"); + combination(values, 2); + combination(values, 3); +} -- cgit v1.3