From 2e1dfe05492c2cf7b893a78862cd4647a0425d7a Mon Sep 17 00:00:00 2001 From: Curtis McEnroe Date: Mon, 10 Dec 2018 01:05:00 -0500 Subject: Solve day 10 part 1 --- 2018/day10.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 2018/day10.c (limited to '2018/day10.c') diff --git a/2018/day10.c b/2018/day10.c new file mode 100644 index 0000000..b7044c5 --- /dev/null +++ b/2018/day10.c @@ -0,0 +1,43 @@ +#include +#include +#include + +struct Point { + int x, y; + int dx, dy; +}; + +int main() { + size_t len = 0; + struct Point points[500]; + while (!feof(stdin)) { + scanf( + "position=<%d, %d> velocity=<%d, %d>\n", + &points[len].x, &points[len].y, &points[len].dx, &points[len].dy + ); + len++; + } + int minX, minY, maxX, maxY; + do { + minX = minY = INT_MAX; + maxX = maxY = INT_MIN; + for (size_t i = 0; i < len; ++i) { + points[i].x += points[i].dx; + points[i].y += points[i].dy; + if (points[i].x < minX) minX = points[i].x; + if (points[i].y < minY) minY = points[i].y; + if (points[i].x > maxX) maxX = points[i].x; + if (points[i].y > maxY) maxY = points[i].y; + } + } while (maxY - minY > 9); + for (int y = minY; y <= maxY; ++y) { + for (int x = minX; x <= maxX; ++x) { + size_t i; + for (i = 0; i < len; ++i) { + if (points[i].x == x && points[i].y == y) break; + } + printf("%c", (i == len ? '.' : '#')); + } + printf("\n"); + } +} -- cgit 1.4.1