#!/usr/bin/env python my_input = "" with open("/home/login/bin/advent/input9.txt") as f: for line in f: my_input += line[:-1] #no newlines score_indicator = 0 score = 0 prev_char = '' in_garbage_zone = False is_current_char_cancelled = False char_before_exclamation = '' number_of_garbage_chars = 0 for char in my_input: if in_garbage_zone == True: if prev_char == '!': is_current_char_cancelled = True ##print("in_garbage_zone=True and prev_char=! and is_current_char_cancelled=True") pass else: is_current_char_cancelled = False if char == '>': ##print("in_garbage_zone=True and char=> -> in_garbage_zone=False") in_garbage_zone = False elif char == '!': char_before_exclamation = prev_char else: ##print("in_garbage_zone=True and char="+char) number_of_garbage_chars += 1 pass elif in_garbage_zone == False: if char == '<': ##print("in_garbage_zone=False and char=< -> in_garbage_zone=True") in_garbage_zone = True elif char == '{': ##print("in_garbage_zone=False and char={ -> score_indicator+=1 (new score_indicator is " + str(score_indicator+1) + ")") score_indicator += 1 elif char == '}': ##print("in_garbage_zone=False and char=} -> score+=score_indicator(" + str(score_indicator) + ") and score_indicator-=1") score += score_indicator score_indicator -= 1 elif char == ',': ##print("in_garbage_zone=False and char=,") pass if is_current_char_cancelled == False: prev_char = char elif is_current_char_cancelled == True: prev_char = char_before_exclamation ##print("character_processed = " + char) ##print("is_current_char_cancelled = " + str(is_current_char_cancelled)) ##print("prev_char = " + prev_char) ##print("current score = " + str(score)) ##print("------------------------------------------") ##raw_input() answer1 = score print("Part 1: " + str(answer1)) answer2 = number_of_garbage_chars print("Part 2: " + str(answer2))