advent-of-code

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
Mpuzzle13.py | 35++++++++++++++++++++++++++++++-----
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