From 1c2555b3574b9498347b8254ec5be90d9e0015f8 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Tue, 2 Jan 2024 20:23:16 +0100 Subject: clean up --- src/day04.cpp | 26 ++++++++++++-------------- src/day05.cpp | 27 ++++++++++++--------------- src/day09.cpp | 13 ++++++------- src/day10.cpp | 19 +++++++------------ src/day12.cpp | 7 +++---- src/day14.cpp | 22 +++++++++------------- src/day16.cpp | 4 +--- 7 files changed, 50 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/day04.cpp b/src/day04.cpp index 8afcb2c..0d3e552 100644 --- a/src/day04.cpp +++ b/src/day04.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -25,8 +24,8 @@ read_file(string_view filename) vector split(const string& line, char sep) { - vector parts{}; stringstream input{ line }; + vector parts; for ( string part; getline(input, part, sep); ) { parts.emplace_back(part); @@ -49,13 +48,12 @@ read_ints(const string& line) return container; } -vector -build_data_set() +auto +build_data_set(string_view filename) { - const auto lines = read_file("data/day04.txt"); - vector values{}; + vector values; - for ( const auto& line: lines ) { + for ( const auto& line: read_file(filename) ) { const auto cards = split(line, ':'); const auto numbers = split(cards[1], '|'); @@ -75,10 +73,10 @@ build_data_set() } void -pass1() +pass1(const vector& values) { auto sum = 0U; - for ( auto value: build_data_set() ) { + for ( auto value: values ) { if ( value != 0 ) { sum += (1U << (value - 1)); } @@ -88,10 +86,9 @@ pass1() } void -pass2() +pass2(const vector& values) { - const auto values = build_data_set(); - auto count = 0U; + auto count = 0U; function process = [&](size_t start, size_t end) -> void { for ( ; start != end; ++start ) { @@ -111,6 +108,7 @@ pass2() int main() { - pass1(); - pass2(); + const auto values = build_data_set("data/day04.txt"); + pass1(values); + pass2(values); } diff --git a/src/day05.cpp b/src/day05.cpp index 92e39fc..42fda29 100644 --- a/src/day05.cpp +++ b/src/day05.cpp @@ -49,7 +49,7 @@ read_file(string_view filename) vector split(const string& line, char sep) { - vector parts{}; + vector parts; stringstream input{ line }; for ( string part; getline(input, part, sep); ) { @@ -60,10 +60,8 @@ split(const string& line, char sep) } void -part1() +part1(const vector& lines) { - auto lines = read_file("data/day05.txt"); - auto read_ints = [](const string& line) { stringstream iss{ line }; return vector{ istream_iterator{ iss }, istream_iterator{} }; @@ -71,8 +69,8 @@ part1() auto seeds = read_ints(lines[0].substr(6)); - map category_mapping{}; - map> range_mapping{}; + map category_mapping; + map> range_mapping; // read blocks for ( size_t idx = 1; idx < lines.size(); ) { @@ -84,7 +82,7 @@ part1() category_mapping[parts[0]] = parts[2]; - vector mapping{}; + vector mapping; for ( ; idx < lines.size() && !lines[idx].empty(); ++idx ) { auto values = read_ints(lines[idx]); @@ -117,10 +115,8 @@ part1() } void -part2() +part2(const vector& lines) { - auto lines = read_file("data/day05-sample1.txt"); - auto read_ints = [](const string& line) { stringstream iss{ line }; return vector{ istream_iterator{ iss }, istream_iterator{} }; @@ -128,8 +124,8 @@ part2() auto seeds = read_ints(lines[0].substr(6)); - map category_mapping{}; - map> range_mapping{}; + map category_mapping; + map> range_mapping; // read blocks for ( size_t idx = 1; idx < lines.size(); ) { @@ -141,7 +137,7 @@ part2() category_mapping[parts[0]] = parts[2]; - vector mapping{}; + vector mapping; for ( ; idx < lines.size() && !lines[idx].empty(); ++idx ) { auto values = read_ints(lines[idx]); @@ -181,6 +177,7 @@ part2() int main() { - part1(); - part2(); + auto lines = read_file("data/day05.txt"); + part1(lines); + part2(lines); } diff --git a/src/day09.cpp b/src/day09.cpp index 0019d05..4b30e6e 100644 --- a/src/day09.cpp +++ b/src/day09.cpp @@ -45,10 +45,8 @@ solve_rec(const vector& values) } void -part1() +part1(const vector& lines) { - auto lines = read_file("data/day09.txt"); - long sum = 0; for ( const auto& line: lines ) { sum += solve_rec(read_ints(line)); @@ -57,10 +55,10 @@ part1() } void -part2() +part2(const vector& lines) { long sum = 0; - for ( const auto& line: read_file("data/day09.txt") ) { + for ( const auto& line: lines ) { auto values = read_ints(line); reverse(values.begin(), values.end()); sum += solve_rec(values); @@ -71,6 +69,7 @@ part2() int main() { - part1(); - part2(); + auto lines = read_file("data/day09.txt"); + part1(lines); + part2(lines); } diff --git a/src/day10.cpp b/src/day10.cpp index 5591290..264e111 100644 --- a/src/day10.cpp +++ b/src/day10.cpp @@ -38,8 +38,7 @@ find_start_pos(const puzzle_t& puzzle) bool predict_direction(const puzzle_t& puzzle, pos_t& current, char& direction) { - auto x = get<0>(current); // NOLINT - auto y = get<1>(current); // NOLINT + auto [x, y] = current; if ( direction == 'S' ) { ++y; @@ -115,10 +114,8 @@ predict_direction(const puzzle_t& puzzle, pos_t& current, char& direction) }; void -part1() +part1(const puzzle_t& puzzle) { - const auto puzzle = read_file("data/day10.txt"); - const auto start_pos = find_start_pos(puzzle); auto max_steps = 0; @@ -163,10 +160,8 @@ flood_fill(puzzle_t& puzzle, size_t x, size_t y) }; void -part2() +part2(const puzzle_t& puzzle_original) { - const auto puzzle_original = read_file("data/day10.txt"); - puzzle_t puzzle{ puzzle_original.size(), string(puzzle_original[0].size(), ' ') }; const auto start_pos = find_start_pos(puzzle_original); @@ -176,8 +171,7 @@ part2() auto current_pos = start_pos; for ( ;; ) { - auto x = get<0>(current_pos); // NOLINT - auto y = get<1>(current_pos); // NOLINT + auto [x, y] = current_pos; puzzle[y][x] = puzzle_original[y][x]; @@ -216,6 +210,7 @@ part2() int main() { - part1(); - part2(); + const auto puzzle = read_file("data/day10.txt"); + part1(puzzle); + part2(puzzle); } diff --git a/src/day12.cpp b/src/day12.cpp index 31a2739..b01b2fb 100644 --- a/src/day12.cpp +++ b/src/day12.cpp @@ -104,10 +104,8 @@ brute_force(string_view puzzle, const vector& nums) } void -part1() +part1(const vector& input) { - const auto input = read_file("data/day12.txt"); - auto sum = 0L; for ( const auto& line: input ) { auto parts = split(line, ' '); @@ -122,5 +120,6 @@ part1() int main() { - part1(); + const auto input = read_file("data/day12.txt"); + part1(input); } diff --git a/src/day14.cpp b/src/day14.cpp index 2b7a5b8..8816ce1 100644 --- a/src/day14.cpp +++ b/src/day14.cpp @@ -21,10 +21,8 @@ read_file(string_view filename) } void -part1() +part1(const vector& lines) { - const auto lines = read_file("data/day14.txt"); - auto start = chrono::steady_clock::now(); size_t sum = 0; @@ -182,10 +180,9 @@ tilt_east(vector& lines) void tilt(vector& lines) { - tilt_north(lines); - tilt_west(lines); - tilt_south(lines); - tilt_east(lines); + for ( auto tilt: { tilt_north, tilt_west, tilt_south, tilt_east } ) { + tilt(lines); + } } size_t @@ -201,16 +198,14 @@ calc(const vector& lines) } void -part2() +part2(vector lines) { - auto lines = read_file("data/day14.txt"); - auto start = chrono::steady_clock::now(); map, long> cache; const long dest = 1'000'000'000; - for ( long index = 0; true; ++index ) { + for ( long index = 0;; ++index ) { auto iter = cache.find(lines); if ( iter != cache.end() ) { auto offset = iter->second; @@ -238,6 +233,7 @@ part2() int main() { - part1(); - part2(); + const auto lines = read_file("data/day14.txt"); + part1(lines); + part2(lines); } diff --git a/src/day16.cpp b/src/day16.cpp index c2cd365..93c7479 100644 --- a/src/day16.cpp +++ b/src/day16.cpp @@ -44,9 +44,7 @@ solve(const vector& lines, tuple start) positions.emplace(start); while ( !positions.empty() ) { - auto row = get<0>(positions.front()); - auto col = get<1>(positions.front()); - auto dir = get<2>(positions.front()); + auto [row, col, dir] = positions.front(); positions.pop(); while ( true ) { -- cgit v1.3