commit b3bd33b4cb7ce607b88a7e25cf8dc3714c119f26
parent b7298b01ae184613559d3e57cc66ce62da7b0df9
Author: mpizzzle <michael.770211@gmail.com>
Date: Fri, 15 Dec 2017 22:01:42 +0000
safety commit (trying to refactor puzzle 13 and f**ked it up, still got solution though :--p)
Diffstat:
1 file changed, 30 insertions(+), 5 deletions(-)
diff --git a/puzzle13.py b/puzzle13.py
@@ -13,25 +13,50 @@ with open('files/puzzle13.txt') as f:
firewall.append(int(tokens[1]))
idx += 1
-def generate_sequence(x):
+def generate_sequence(x, delay):
sequence = []
reverse = False
- for i in range(len(firewall)):
+ for i in range(len(firewall) + delay):
sequence.append((x - 1) - (i % (x - 1)) if reverse else i % (x - 1))
if (i + 1) % (x - 1) == 0:
reverse = not reverse
return sequence
-scanner_sequences = {}
+scanner_sequences = {i : generate_sequence(i, 0) for i in range(2, 100)}
severity = 0
for picoseconds, wall in enumerate(firewall):
if wall != 0:
- if wall not in scanner_sequences:
- scanner_sequences[wall] = generate_sequence(wall)
if scanner_sequences[wall][picoseconds] == 0:
severity += wall * picoseconds
print severity
+
+def generate_scanner_position(wall, pos):
+ reverse = False
+
+ for i in range(pos):
+ if (i + 1) % (wall - 1) == 0:
+ reverse = not reverse
+
+ return (wall - 1) - (pos % (wall - 1)) if reverse else delay % (wall - 1)
+
+delay = 0
+caught = True
+furthest = 0
+while caught:
+ caught = False
+ delay += 1
+ for picoseconds, wall in enumerate(firewall):
+ if wall != 0:
+ print generate_scanner_position(wall, picoseconds + delay)
+ if generate_scanner_position(wall, picoseconds + delay) == 0:
+ if picoseconds > furthest:
+ furthest = picoseconds
+ print "current furthest: " + str(furthest)
+ caught = True
+ break
+
+print delay