From 756f22d58bb198b8f34589c112e1003614ccdcd6 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sun, 2 Nov 2025 21:41:58 +0100 Subject: aoc 2017, days 1-20 --- 2017/src/day17.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 2017/src/day17.cpp (limited to '2017/src/day17.cpp') diff --git a/2017/src/day17.cpp b/2017/src/day17.cpp new file mode 100644 index 0000000..6cf498b --- /dev/null +++ b/2017/src/day17.cpp @@ -0,0 +1,47 @@ +#include +#include + +using namespace std; + +namespace { + +void +part1(size_t steps, size_t iterations) +{ + vector buffer{ 0 }; + size_t pos = 0; + + for ( size_t i = 1; i <= iterations; ++i ) { + pos = (pos + steps) % i + 1; + buffer.insert(buffer.begin() + static_cast::difference_type>(pos), i); + } + + cout << "Part1: " << buffer[(pos + 1) % buffer.size()] << '\n'; +} + +void +part2(size_t steps, size_t iterations) +{ + size_t pos = 0; + size_t value = 0; + + for ( size_t i = 1; i <= iterations; ++i ) { + pos = (pos + steps) % i; + if ( pos == 0 ) { + value = i; + } + pos = (pos + 1) % (i + 1); + } + + cout << "Part2: " << value << '\n'; +} + +} // namespace + +int +main() +{ + const auto input = 371; + part1(input, 2017); + part2(input, 50'000'000); +} -- cgit v1.3