commit b7298b01ae184613559d3e57cc66ce62da7b0df9 parent 5f7e3475a8a262a265e449ec92a0e50885ce06c2 Author: mpizzzle <michael.770211@gmail.com> Date: Fri, 15 Dec 2017 17:20:30 +0000 puzzle 13 complete Diffstat:
| A | puzzle13.py | | | 37 | +++++++++++++++++++++++++++++++++++++ |
1 file changed, 37 insertions(+), 0 deletions(-)
diff --git a/puzzle13.py b/puzzle13.py @@ -0,0 +1,37 @@ +firewall = [] +idx = 0 + +with open('files/puzzle13.txt') as f: + for line in f.readlines(): + tokens = line.split(' ') + + if idx is not int(tokens[0][:len(tokens[0]) - 1]): + while idx < int(tokens[0][:len(tokens[0]) - 1]): + firewall.append(0) + idx += 1 + + firewall.append(int(tokens[1])) + idx += 1 + +def generate_sequence(x): + sequence = [] + reverse = False + + for i in range(len(firewall)): + 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 = {} +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