From 2e28981207430301b54d4d74ee620d0f159f4d8b Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 5 Dec 2021 10:37:21 +0100 Subject: Add day 3 solutions --- 2017/03/puzzle-1.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 2017/03/puzzle-1.c (limited to '2017/03/puzzle-1.c') diff --git a/2017/03/puzzle-1.c b/2017/03/puzzle-1.c new file mode 100644 index 0000000..00cebd7 --- /dev/null +++ b/2017/03/puzzle-1.c @@ -0,0 +1,50 @@ +#include +#include +#include + +#define ODD(x) (x & 1) +#define MOVE(x) \ + do { \ + for (int k = 0; k < j; k++) { \ + x; \ + if (++m == n) \ + goto out; \ + } \ + } while (0) + +int +main(void) +{ + int n, x, y; + FILE *fp; + + if (!(fp = fopen("input", "r"))) + err(EXIT_FAILURE, "fopen"); + + fscanf(fp, "%d", &n); + fclose(fp); + + x = y = 0; + for (int i = 1, m = 1, j = 1; i < n; i++) { + if (ODD(i)) { + if (ODD(j)) + MOVE(x++); + else + MOVE(x--); + } else { + if (ODD(j)) + MOVE(y++); + else + MOVE(y--); + j++; + } + } +out: + if (x < 0) + x = -x; + if (y < 0) + y = -y; + + printf("%d\n", x + y); + return EXIT_SUCCESS; +} -- cgit v1.2.3