aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-16 14:34:25 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-16 14:34:25 +0800
commit420594eb5bcadc3114e6d08d4fc4293231487c1c (patch)
treebf3a0d1ee645fe1dd976b4c266efbefa3fe99d73 /src
parent51f1930d6ba21e8760d65bc51881fed7c943c983 (diff)
downloadadvent-of-code-420594eb5bcadc3114e6d08d4fc4293231487c1c.tar.gz
advent-of-code-420594eb5bcadc3114e6d08d4fc4293231487c1c.zip
2018 day6
Diffstat (limited to 'src')
-rw-r--r--src/2018/day6/aoc.cpp6
-rw-r--r--src/2018/day6/aoc.h14
2 files changed, 16 insertions, 4 deletions
diff --git a/src/2018/day6/aoc.cpp b/src/2018/day6/aoc.cpp
index df42be0..620be8d 100644
--- a/src/2018/day6/aoc.cpp
+++ b/src/2018/day6/aoc.cpp
@@ -3,7 +3,7 @@
namespace aoc2018 {
-int day6(line_view file) {
+std::pair<int, int> day6(line_view file, int sd) {
std::vector<coordinate> cs;
int maxx{INT32_MIN};
int maxy{INT32_MIN};
@@ -18,7 +18,7 @@ int day6(line_view file) {
std::sort(cs.begin(), cs.end());
space_board b{maxx + 1, maxy + 1};
- //printf("%d %d\n", b.width, b.height);
+ // printf("%d %d\n", b.width, b.height);
for (size_t i = 0; i < cs.size(); i++) {
coordinate& c = cs[i];
@@ -68,7 +68,7 @@ int day6(line_view file) {
max = x;
}
}
- return max;
+ return {max, b.safe(sd, cs)};
}
} // namespace aoc2018
diff --git a/src/2018/day6/aoc.h b/src/2018/day6/aoc.h
index 2f83842..f79702c 100644
--- a/src/2018/day6/aoc.h
+++ b/src/2018/day6/aoc.h
@@ -1,5 +1,6 @@
#pragma once
#include "common.h"
+#include <algorithm>
#include <math.h>
#include <utility>
#include <vector>
@@ -98,6 +99,17 @@ struct space_board {
}
}
+ int safe(int d, const std::vector<coordinate>& cs) {
+ int total{0};
+ for (size_t i = 0; i < ps.size(); i++) {
+ coordinate c{int(i % width), int(i / width)};
+ int sum{0};
+ std::for_each(cs.begin(), cs.end(), [&sum, &c](coordinate x) { sum += c.distance(x); });
+ total += int(sum < d);
+ }
+ return total;
+ }
+
void count(std::vector<int>& area) const noexcept {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
@@ -116,6 +128,6 @@ struct space_board {
}
};
-int day6(line_view);
+std::pair<int, int> day6(line_view, int);
} // namespace aoc2018