From f7304a97b553a44f3cc9d58ab17da2c6132726e6 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sun, 17 Dec 2023 09:53:17 +0100 Subject: cleanup code --- src/day16.cpp | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/day16.cpp b/src/day16.cpp index 68defad..c2cd365 100644 --- a/src/day16.cpp +++ b/src/day16.cpp @@ -50,8 +50,8 @@ solve(const vector& lines, tuple start) positions.pop(); while ( true ) { - col += get<0>(movement[dir]); // NOLINT - row += get<1>(movement[dir]); // NOLINT + col += get<0>(movement.at(dir % 4)); + row += get<1>(movement.at(dir % 4)); if ( row >= lines.size() || col >= lines[0].size() ) { break; @@ -65,31 +65,26 @@ solve(const vector& lines, tuple start) const auto chr = lines[row][col]; - if ( chr == '|' && (dir == DIR_LEFT || dir == DIR_RIGHT) ) { - dir = (dir + 1) % 4; - positions.emplace(row, col, (dir + 2) % 4); + if ( (chr == '|' && (dir == DIR_LEFT || dir == DIR_RIGHT)) || + (chr == '-' && (dir == DIR_UP || dir == DIR_DOWN)) ) { + dir = dir + 1; + positions.emplace(row, col, dir + 2); } - else if ( chr == '-' && (dir == DIR_UP || dir == DIR_DOWN) ) { - dir = (dir + 1) % 4; - positions.emplace(row, col, (dir + 2) % 4); + else if ( (chr == '/' && (dir == DIR_LEFT || dir == DIR_RIGHT)) || + (chr == '\\' && (dir == DIR_UP || dir == DIR_DOWN)) ) { + dir = dir + 3; } - else if ( chr == '/' && (dir == DIR_LEFT || dir == DIR_RIGHT) ) { - dir = (dir + 3) % 4; - } - else if ( chr == '/' && (dir == DIR_UP || dir == DIR_DOWN) ) { - dir = (dir + 1) % 4; - } - else if ( chr == '\\' && (dir == DIR_LEFT || dir == DIR_RIGHT) ) { - dir = (dir + 1) % 4; - } - else if ( chr == '\\' && (dir == DIR_UP || dir == DIR_DOWN) ) { - dir = (dir + 3) % 4; + else if ( (chr == '\\' && (dir == DIR_LEFT || dir == DIR_RIGHT)) || + (chr == '/' && (dir == DIR_UP || dir == DIR_DOWN)) ) { + dir = dir + 1; } + + dir %= 4; } } set> foo; - for (const auto& bar: visited) { + for ( const auto& bar: visited ) { foo.emplace(get<0>(bar.first), get<1>(bar.first)); } return foo.size(); -- cgit v1.3