diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-04-07 17:18:18 -0400 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-04-07 17:19:39 -0400 |
| commit | 87ab487d59fa85dbe2afa55cc841b02805ae42ca (patch) | |
| tree | cd90ab715e1b5b5803674045dbafd6d51d27ac90 /src/01/solve.py | |
| parent | 1bcc82c5bfbde87edd03c01ffdf9ee5934681592 (diff) | |
| download | aoc2018-python-87ab487d59fa85dbe2afa55cc841b02805ae42ca.tar.gz aoc2018-python-87ab487d59fa85dbe2afa55cc841b02805ae42ca.zip | |
Reorder days into src
Diffstat (limited to 'src/01/solve.py')
| -rw-r--r-- | src/01/solve.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/01/solve.py b/src/01/solve.py new file mode 100644 index 0000000..d23d8d5 --- /dev/null +++ b/src/01/solve.py @@ -0,0 +1,48 @@ +import sys
+sys.path.append("../common")
+import aoc
+
+data = [int(l) for l in aoc.data.split("\n")]
+
+def solve1(args):
+ return sum(data)
+
+def solve2(args):
+ totshift = 0
+ fvals = list()
+ for c in data:
+ fvals.append(totshift)
+ totshift += c
+ aoc.debug("total shift: " + str(totshift))
+
+ doubles = list()
+
+ if totshift == 0:
+ doubles.append([len(data), 0])
+
+ i = 0
+ while i < len(fvals):
+ for j in range(len(fvals)):
+ if i == j:
+ continue
+ dif = fvals[j] - fvals[i]
+ if dif % totshift == 0:
+ inds = list([i, j])
+ if j > i:
+ inds = inds[::-1]
+ if totshift > 0: #ends on c
+ if fvals[inds[0]] > fvals[inds[1]]:
+ inds = inds[::-1]
+ else:
+ if fvals[inds[0]] < fvals[inds[1]]:
+ inds = inds[::-1]
+
+ pos = (abs(dif) // totshift) * len(data) + inds[0]
+ doubles.append([pos, fvals[inds[1]]])
+ i += 1
+
+ assert(len(doubles) != 0)
+
+ return min(doubles, key = lambda x: x[0])[1]
+
+aoc.run(solve1, solve2, sols=[411, 56360])
|
