From 6e77b7a8a510f702d984a1b34312126248001970 Mon Sep 17 00:00:00 2001 From: Ben Date: Fri, 7 Dec 2018 13:08:52 +0000 Subject: [PATCH] day 6 --- AdventOfCode2018/6thDay/a.out | Bin 0 -> 58720 bytes AdventOfCode2018/6thDay/challenge.txt | 81 ++++++++++++++++ AdventOfCode2018/6thDay/input.txt | 50 ++++++++++ AdventOfCode2018/6thDay/main.cpp | 131 ++++++++++++++++++++++++++ 4 files changed, 262 insertions(+) create mode 100755 AdventOfCode2018/6thDay/a.out create mode 100644 AdventOfCode2018/6thDay/challenge.txt create mode 100644 AdventOfCode2018/6thDay/input.txt create mode 100644 AdventOfCode2018/6thDay/main.cpp diff --git a/AdventOfCode2018/6thDay/a.out b/AdventOfCode2018/6thDay/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e0636ce325aa73c93de9570878de0d923b31244f GIT binary patch literal 58720 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 LT2X1_xwZZ;$FEs6 literal 0 HcmV?d00001 diff --git a/AdventOfCode2018/6thDay/challenge.txt b/AdventOfCode2018/6thDay/challenge.txt new file mode 100644 index 0000000..7ec1abd --- /dev/null +++ b/AdventOfCode2018/6thDay/challenge.txt @@ -0,0 +1,81 @@ +--- Day 6: Chronal Coordinates --- +The device on your wrist beeps several times, and once again you feel like you're falling. + +"Situation critical," the device announces. "Destination indeterminate. Chronal interference detected. Please specify new target coordinates." + +The device then produces a list of coordinates (your puzzle input). Are they places it thinks are safe or dangerous? It recommends you check manual page 729. The Elves did not give you a manual. + +If they're dangerous, maybe you can minimize the danger by finding the coordinate that gives the largest distance from the other points. + +Using only the Manhattan distance, determine the area around each coordinate by counting the number of integer X,Y locations that are closest to that coordinate (and aren't tied in distance to any other coordinate). + +Your goal is to find the size of the largest area that isn't infinite. For example, consider the following list of coordinates: + +1, 1 +1, 6 +8, 3 +3, 4 +5, 5 +8, 9 +If we name these coordinates A through F, we can draw them on a grid, putting 0,0 at the top left: + +.......... +.A........ +.......... +........C. +...D...... +.....E.... +.B........ +.......... +.......... +........F. +This view is partial - the actual grid extends infinitely in all directions. Using the Manhattan distance, each location's closest coordinate can be determined, shown here in lowercase: + +aaaaa.cccc +aAaaa.cccc +aaaddecccc +aadddeccCc +..dDdeeccc +bb.deEeecc +bBb.eeee.. +bbb.eeefff +bbb.eeffff +bbb.ffffFf +Locations shown as . are equally far from two or more coordinates, and so they don't count as being closest to any. + +In this example, the areas of coordinates A, B, C, and F are infinite - while not shown here, their areas extend forever outside the visible grid. However, the areas of coordinates D and E are finite: D is closest to 9 locations, and E is closest to 17 (both including the coordinate's location itself). Therefore, in this example, the size of the largest area is 17. + +What is the size of the largest area that isn't infinite? + +--- Part Two --- +On the other hand, if the coordinates are safe, maybe the best you can do is try to find a region near as many coordinates as possible. + +For example, suppose you want the sum of the Manhattan distance to all of the coordinates to be less than 32. For each location, add up the distances to all of the given coordinates; if the total of those distances is less than 32, that location is within the desired region. Using the same coordinates as above, the resulting region looks like this: + +.......... +.A........ +.......... +...###..C. +..#D###... +..###E#... +.B.###.... +.......... +.......... +........F. +In particular, consider the highlighted location 4,3 located at the top middle of the region. Its calculation is as follows, where abs() is the absolute value function: + +Distance to coordinate A: abs(4-1) + abs(3-1) = 5 +Distance to coordinate B: abs(4-1) + abs(3-6) = 6 +Distance to coordinate C: abs(4-8) + abs(3-3) = 4 +Distance to coordinate D: abs(4-3) + abs(3-4) = 2 +Distance to coordinate E: abs(4-5) + abs(3-5) = 3 +Distance to coordinate F: abs(4-8) + abs(3-9) = 10 +Total distance: 5 + 6 + 4 + 2 + 3 + 10 = 30 +Because the total distance to all coordinates (30) is less than 32, the location is within the region. + +This region, which also includes coordinates D and E, has a total size of 16. + +Your actual region will need to be much larger than this example, though, instead including all locations with a total distance of less than 10000. + +What is the size of the region containing all locations which have a total distance to all given coordinates of less than 10000? + diff --git a/AdventOfCode2018/6thDay/input.txt b/AdventOfCode2018/6thDay/input.txt new file mode 100644 index 0000000..77b84b5 --- /dev/null +++ b/AdventOfCode2018/6thDay/input.txt @@ -0,0 +1,50 @@ +194, 200 +299, 244 +269, 329 +292, 55 +211, 63 +123, 311 +212, 90 +292, 169 +359, 177 +354, 95 +101, 47 +95, 79 +95, 287 +294, 126 +81, 267 +330, 78 +202, 165 +225, 178 +266, 272 +351, 326 +180, 62 +102, 178 +151, 101 +343, 145 +205, 312 +74, 193 +221, 56 +89, 89 +242, 172 +59, 138 +83, 179 +223, 88 +297, 234 +147, 351 +226, 320 +358, 338 +321, 172 +54, 122 +263, 165 +126, 341 +64, 132 +264, 306 +72, 202 +98, 49 +238, 67 +310, 303 +277, 281 +222, 318 +357, 169 +123, 225 \ No newline at end of file diff --git a/AdventOfCode2018/6thDay/main.cpp b/AdventOfCode2018/6thDay/main.cpp new file mode 100644 index 0000000..374d7ec --- /dev/null +++ b/AdventOfCode2018/6thDay/main.cpp @@ -0,0 +1,131 @@ +#include +#include +#include +#include +#include +#include + +struct Point +{ + int64_t x, y; + Point(const int64_t &X, const int64_t &Y) : x(X), y(Y) {} + Point() = default; +}; + +int64_t distance(const Point &a, const Point &b) +{ + return std::abs(a.x - b.x) + std::abs(a.y - b.y); +} + +std::istream &operator>>(std::istream &is, Point &p) +{ + char c; + is >> p.x >> c >> p.y; + return is; +} + +std::ostream &operator<<(std::ostream &os, Point &p) +{ + char c; + os << p.x << ", " << p.y; + return os; +} + +size_t min_index(const size_t &invalid, const Point &point, + const std::vector &points) +{ + size_t result; + int64_t min_dist(std::numeric_limits::max()); + for(size_t p = 0; p < points.size(); ++p) + { + int64_t d(distance(point, points[p])); + if(min_dist > d) + { + min_dist = d; + result = p; + } + else if(min_dist == d) + { + result = invalid; + } + } + return result; +} + +int main(int argc, char *argv[]) +{ + std::ifstream infile(argv[1]); + std::vector points(std::istream_iterator(infile), {}); + + int64_t min_x(std::numeric_limits::max()), min_y(min_x), + max_x(std::numeric_limits::min()), max_y(max_x); + for(auto &p : points) + { + min_x = std::min(min_x, p.x); + min_y = std::min(min_y, p.y); + max_x = std::max(max_x, p.x); + max_y = std::max(max_y, p.y); + } + + int64_t width(max_x - min_x + 1), height(max_y - min_y + 1); + const size_t invalid(points.size()); + std::vector num_claimed(points.size() + 1, 0); + std::set invalid_points; + + for(int64_t x = min_x; x <= max_x; ++x) + { + invalid_points.insert(min_index(invalid, Point(x, min_y), points)); + invalid_points.insert(min_index(invalid, Point(x, max_y), points)); + } + for(int64_t y = min_y; y <= max_y; ++y) + { + invalid_points.insert(min_index(invalid, Point(min_x, y), points)); + invalid_points.insert(min_index(invalid, Point(max_x, y), points)); + } + + for(int64_t x = 0; x < width; ++x) + for(int64_t y = 0; y < height; ++y) + { + int64_t min_dist(std::numeric_limits::max()); + size_t min_index; + for(size_t p = 0; p < points.size(); ++p) + { + int64_t d(distance(Point(x + min_x, y + min_y), points[p])); + if(min_dist > d) + { + min_dist = d; + min_index = p; + } + else if(min_dist == d) + { + min_index = invalid; + } + } + if(invalid_points.find(min_index) == invalid_points.end()) + ++num_claimed[min_index]; + } + std::cout << "Part 1: " + << *std::max_element(num_claimed.begin(), num_claimed.end()) + << "\n"; + + int64_t area(0); + constexpr int64_t cutoff(10000); + const int64_t padding(cutoff / points.size() + 1); + + const int64_t x_lower(min_x - padding), x_upper(max_x + 1 + padding), + y_lower(min_y - padding), y_upper(max_y + 1 + padding); + for(int64_t x = x_lower; x < x_upper; ++x) + for(int64_t y = y_lower; y < y_upper; ++y) + { + int64_t total_dist(0); + for(auto &point : points) + { + total_dist += distance(Point(x, y), point); + if(total_dist > cutoff) + break; + } + if(total_dist < cutoff) + ++area; + } + std::cout << "Part 2: " << area << "\n"; +} \ No newline at end of file