aboutsummaryrefslogtreecommitdiff
path: root/src/2017/day17/aoc.cpp
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2023-02-09 22:38:36 +0800
committerkaiwu <kaiwu2004@gmail.com>2023-02-09 22:38:36 +0800
commit799bfdddc02739849c440f71a7de282856512c02 (patch)
tree476c451f4802a15d8515000bc98f53a884f5f27e /src/2017/day17/aoc.cpp
parent526228d5a94e74e600f38aa8055cb5d01e0e4eba (diff)
downloadadvent-of-code-799bfdddc02739849c440f71a7de282856512c02.tar.gz
advent-of-code-799bfdddc02739849c440f71a7de282856512c02.zip
2017 day17 part1
Diffstat (limited to 'src/2017/day17/aoc.cpp')
-rw-r--r--src/2017/day17/aoc.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/2017/day17/aoc.cpp b/src/2017/day17/aoc.cpp
index f2a9d5a..ba0d5bc 100644
--- a/src/2017/day17/aoc.cpp
+++ b/src/2017/day17/aoc.cpp
@@ -2,6 +2,40 @@
namespace aoc2017 {
-std::pair<int64_t, int64_t> day17(line_view file) { return {0, 0}; }
+static spinlock* next(spinlock* x, int step) {
+ while (step-- > 0) {
+ x = x->next;
+ }
+ return x;
+}
+
+static void insert(spinlock* s, spinlock** current, int v) {
+ spinlock* n = s->next;
+ spinlock* x = new spinlock;
+ x->val = v;
+ s->next = x;
+ x->prev = s;
+ x->next = n;
+ n->prev = x;
+ *current = x;
+}
+
+std::pair<int64_t, int64_t> day17(line_view file) {
+ spinlock* l = new spinlock;
+ l->val = 0;
+ l->next = l;
+ l->prev = l;
+ // spinlock* l0 = l;
+
+ int step{356};
+ for (int i = 1; i < 2018; i++) {
+ l = next(l, step);
+ insert(l, &l, i);
+ }
+ int t0 = l->next->val;
+ // printf("%d\n", l0->next->val);
+
+ return {t0, 0};
+}
} // namespace aoc2017