All: Cleanup all files
Add newline to end of files and remove whitespace from end of lines
This commit is contained in:
@@ -111,7 +111,7 @@ i64 puzzle1(FILE* fp)
|
||||
{
|
||||
if (positions[0].x == positions[1].x && positions[0].y == positions[1].y)
|
||||
return distance;
|
||||
|
||||
|
||||
for (auto& position : positions)
|
||||
{
|
||||
Direction direction = tile_exit_direction(grid[position.y][position.x], position.from);
|
||||
@@ -140,7 +140,7 @@ i64 puzzle2(FILE* fp)
|
||||
auto position = find_grid_first_moves(grid)[0];
|
||||
|
||||
while ((grid[position.y][position.x] & ~Flag::Mask) != 'S')
|
||||
{
|
||||
{
|
||||
Direction direction = tile_exit_direction(grid[position.y][position.x] & ~Flag::Mask, position.from);
|
||||
|
||||
switch (grid[position.y][position.x] & ~Flag::Mask)
|
||||
@@ -196,7 +196,7 @@ i64 puzzle2(FILE* fp)
|
||||
|
||||
// Mark start tile as part of the path
|
||||
grid[position.y][position.x] |= Flag::Path;
|
||||
|
||||
|
||||
// Clean up flags
|
||||
for (auto& row : grid)
|
||||
{
|
||||
|
||||
@@ -84,7 +84,7 @@ i64 solution(FILE* fp, u64 expansion)
|
||||
const u64 x2 = j % map[0].size();
|
||||
if (map[y2][x2] != '#')
|
||||
continue;
|
||||
|
||||
|
||||
result += distance_with_expansion(map, x1, y1, x2, y2, expansion);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ i64 count_possibilities(BAN::StringView record, BAN::Span<u64> groups)
|
||||
for (size_t i = 0; i + groups[0] <= record.size(); i++)
|
||||
{
|
||||
bool valid = true;
|
||||
|
||||
|
||||
if (record.substring(i, groups[0]).contains('.'))
|
||||
valid = false;
|
||||
|
||||
@@ -91,7 +91,7 @@ i64 puzzle1(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.size() < 3)
|
||||
continue;
|
||||
|
||||
|
||||
auto parts = MUST(line.split(' '));
|
||||
|
||||
auto record = parts[0];
|
||||
@@ -119,7 +119,7 @@ i64 puzzle2(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.size() < 3)
|
||||
continue;
|
||||
|
||||
|
||||
auto parts = MUST(line.split(' '));
|
||||
|
||||
BAN::String record;
|
||||
|
||||
@@ -191,7 +191,7 @@ i64 puzzle2(FILE* fp)
|
||||
tilt_platform(platform, Direction::North);
|
||||
tilt_platform(platform, Direction::West);
|
||||
tilt_platform(platform, Direction::South);
|
||||
tilt_platform(platform, Direction::East);
|
||||
tilt_platform(platform, Direction::East);
|
||||
}
|
||||
|
||||
i64 result = 0;
|
||||
|
||||
@@ -69,7 +69,7 @@ Grid parse_grid(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.empty())
|
||||
break;
|
||||
|
||||
|
||||
MUST(grid.emplace_back(line.size()));
|
||||
for (size_t i = 0; i < line.size(); i++)
|
||||
grid.back()[i] = char_to_tile(line[i]);
|
||||
|
||||
@@ -52,7 +52,7 @@ BAN::Vector<BAN::Vector<i64>> parse_grid(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.empty())
|
||||
break;
|
||||
|
||||
|
||||
MUST(grid.emplace_back(line.size()));
|
||||
for (size_t i = 0; i < line.size(); i++)
|
||||
grid.back()[i] = line[i] - '0';
|
||||
@@ -95,7 +95,7 @@ i64 solve_general(FILE* fp)
|
||||
BAN::HashSet<Position> visited;
|
||||
BAN::HashSet<Position> pending;
|
||||
MUST(pending.insert({ 0, 0 }));
|
||||
|
||||
|
||||
while (!pending.empty())
|
||||
{
|
||||
auto position = *pending.begin();
|
||||
@@ -175,7 +175,7 @@ i64 puzzle1(FILE* fp)
|
||||
|
||||
i64 puzzle2(FILE* fp)
|
||||
{
|
||||
return solve_general<4, 10>(fp);
|
||||
return solve_general<4, 10>(fp);
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
|
||||
@@ -153,7 +153,7 @@ i64 solve_general(FILE* fp, auto parse_dir, auto parse_count)
|
||||
|
||||
i32 rmin_x = INT32_MAX;
|
||||
find_min_and_remove_duplicates(rpath, lpath, rmin_x);
|
||||
|
||||
|
||||
ASSERT(lmin_x != rmin_x);
|
||||
auto& expand = (lmin_x < rmin_x) ? rpath : lpath;
|
||||
|
||||
@@ -177,7 +177,7 @@ i64 solve_general(FILE* fp, auto parse_dir, auto parse_count)
|
||||
MUST(visited.insert(next));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return path.size() + inner_area.size();
|
||||
}
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ BAN::Vector<Item> parse_items(FILE* fp)
|
||||
item.values[1] = parse_i64(values[1].substring(2));
|
||||
item.values[2] = parse_i64(values[2].substring(2));
|
||||
item.values[3] = parse_i64(values[3].substring(2));
|
||||
|
||||
|
||||
MUST(items.push_back(item));
|
||||
}
|
||||
|
||||
@@ -245,15 +245,15 @@ i64 puzzle2(FILE* fp)
|
||||
}};
|
||||
if (!is_accepted(item, "in"sv, workflows))
|
||||
continue;
|
||||
|
||||
|
||||
i64 x_count = values_sorted[0][xi + 1] - values_sorted[0][xi];
|
||||
i64 m_count = values_sorted[1][mi + 1] - values_sorted[1][mi];
|
||||
i64 a_count = values_sorted[2][ai + 1] - values_sorted[2][ai];
|
||||
i64 s_count = values_sorted[3][si + 1] - values_sorted[3][si];
|
||||
|
||||
result += x_count * m_count * a_count * s_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
timespec time_stop;
|
||||
|
||||
@@ -24,7 +24,7 @@ int puzzle1(FILE* fp)
|
||||
if (strncmp("Game ", ptr, 5))
|
||||
continue;
|
||||
ptr += 5;
|
||||
|
||||
|
||||
int id = parse_int_and_advance(ptr);
|
||||
ptr += 2;
|
||||
|
||||
@@ -63,7 +63,7 @@ int puzzle2(FILE* fp)
|
||||
if (strncmp("Game ", ptr, 5))
|
||||
continue;
|
||||
ptr += 5;
|
||||
|
||||
|
||||
parse_int_and_advance(ptr);
|
||||
ptr += 2;
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ i64 puzzle1(FILE* fp)
|
||||
auto modules = parse_modules(fp);
|
||||
|
||||
BAN::Queue<Signal> signal_queue;
|
||||
|
||||
|
||||
i64 sent_hi = 0;
|
||||
i64 sent_lo = 0;
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ i64 puzzle1(FILE* fp)
|
||||
MUST(visited.insert(position));
|
||||
if (i % 2 == 0)
|
||||
MUST(reachable.insert(position));
|
||||
|
||||
|
||||
Position offsets[4] { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } };
|
||||
for (i32 j = 0; j < 4; j++)
|
||||
{
|
||||
|
||||
@@ -29,7 +29,7 @@ BAN::Vector<BAN::Vector<char>> parse_grid(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.empty())
|
||||
break;
|
||||
|
||||
|
||||
MUST(grid.emplace_back(line.size(), '\0'));
|
||||
for (size_t i = 0; i < line.size(); i++)
|
||||
grid.back()[i] = line[i];
|
||||
@@ -86,7 +86,7 @@ i64 recurse_grid(BAN::Vector<Position>& path, const BAN::Vector<BAN::Vector<char
|
||||
|
||||
if (valid_next_count == 0)
|
||||
return 0;
|
||||
|
||||
|
||||
if (valid_next_count == 1)
|
||||
{
|
||||
MUST(path.push_back(valid_next.front()));
|
||||
|
||||
@@ -46,7 +46,7 @@ BAN::Vector<Hailstone> parse_hailstones(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.empty())
|
||||
break;
|
||||
|
||||
|
||||
auto position_velocity_strs = MUST(line.split('@'));
|
||||
ASSERT(position_velocity_strs.size() == 2);
|
||||
|
||||
@@ -73,7 +73,7 @@ BAN::Vector<Hailstone> parse_hailstones(FILE* fp)
|
||||
i64 puzzle1(FILE* fp)
|
||||
{
|
||||
auto hailstones = parse_hailstones(fp);
|
||||
|
||||
|
||||
i64 result = 0;
|
||||
|
||||
for (size_t i = 0; i < hailstones.size(); i++)
|
||||
|
||||
@@ -37,7 +37,7 @@ BAN::HashMap<BAN::String, Component> parse_components(FILE* fp)
|
||||
line = line.substring(0, line.size() - 1);
|
||||
if (line.empty())
|
||||
break;
|
||||
|
||||
|
||||
auto parts = MUST(line.split(' '));
|
||||
ASSERT(parts.size() >= 2);
|
||||
|
||||
@@ -46,7 +46,7 @@ BAN::HashMap<BAN::String, Component> parse_components(FILE* fp)
|
||||
|
||||
if (!components.contains(parts.front()))
|
||||
MUST(components.emplace(parts.front(), parts.front()));
|
||||
|
||||
|
||||
for (size_t i = 1; i < parts.size(); i++)
|
||||
{
|
||||
MUST(components[parts.front()].connections.emplace_back(parts[i]));
|
||||
@@ -96,7 +96,7 @@ size_t graph_size(const BAN::HashMap<BAN::String, Component>& graph, const BAN::
|
||||
const auto& targets = graph[current].connections;
|
||||
for (const auto& target : targets)
|
||||
{
|
||||
if (removed.contains(connection_key(current, target)))
|
||||
if (removed.contains(connection_key(current, target)))
|
||||
continue;
|
||||
if (visited.contains(target))
|
||||
continue;
|
||||
|
||||
@@ -17,14 +17,14 @@ int puzzle1(FILE* fp)
|
||||
{
|
||||
buffer[strlen(buffer) - 1] = '\0';
|
||||
MUST(lines.emplace_back(buffer));
|
||||
}
|
||||
}
|
||||
|
||||
int result = 0;
|
||||
|
||||
for (size_t y = 0; y < lines.size(); y++)
|
||||
{
|
||||
for (size_t x = 0; x < lines[y].size(); x++)
|
||||
{
|
||||
{
|
||||
if (!isdigit(lines[y][x]))
|
||||
continue;
|
||||
|
||||
@@ -52,7 +52,7 @@ int puzzle1(FILE* fp)
|
||||
should_add = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (should_add)
|
||||
break;
|
||||
@@ -88,7 +88,7 @@ int puzzle2(FILE* fp)
|
||||
{
|
||||
buffer[strlen(buffer) - 1] = '\0';
|
||||
MUST(lines.emplace_back(buffer));
|
||||
}
|
||||
}
|
||||
|
||||
// Didn't want to think about O(1) space, this is much simpler.
|
||||
// Map numbers next to '*' to asterisk's coordinates.
|
||||
|
||||
@@ -26,7 +26,7 @@ i64 puzzle1(FILE* fp)
|
||||
char buffer[256];
|
||||
if (!fgets(buffer, sizeof(buffer), fp))
|
||||
return -1;
|
||||
|
||||
|
||||
{
|
||||
BAN::StringView line(buffer);
|
||||
line = line.substring(0, line.size() - 1);
|
||||
@@ -88,7 +88,7 @@ i64 puzzle2(FILE* fp)
|
||||
char buffer[256];
|
||||
if (!fgets(buffer, sizeof(buffer), fp))
|
||||
return -1;
|
||||
|
||||
|
||||
{
|
||||
BAN::StringView line(buffer);
|
||||
line = line.substring(0, line.size() - 1);
|
||||
|
||||
Reference in New Issue
Block a user