def day10b(): """Day 10a.""" items = helpers.get_input_integers("day10") device = max(items) + 3 jolts = [0] + sorted(items) + [device] matrix = [] n = 0 while n < len(jolts): i = jolts[n] group = [i] while n + 1 < len(jolts) and jolts[n + 1] == i + 1: n += 1 i = jolts[n] group.append(i) n += 1 matrix.append(group) factors = [] for row in matrix: print(row) if len(row) < 3: factors.append(1) elif len(row) == 3: factors.append(2) elif len(row) == 4: factors.append(4) elif len(row) == 5: factors.append(7) print(factors) print(f"Arrangements: {math.prod(factors)}")
def day9a(): """Day 9a.""" items = helpers.get_input_integers("day9") n = 0 length = 25 preamble = items[n:n + length] for item in items[length:]: helpers.check_encoding(preamble, item) n += 1 preamble = items[n:n + length]
def day1a(): """Day 1: Report Repair.""" items = helpers.get_input_integers("day1") for i in items: for j in items: if i == j: continue if i + j == 2020: break if i + j == 2020: break print(f"\nAnswer: {i} + {j} = 2020; {i} * {j} = {i * j}")
def day1b(): """Day 1: Report Repair.""" items = helpers.get_input_integers("day1") for i in items: for j in items: if i == j: continue for k in items: if i in [j, k]: continue if i + j + k == 2020: break if i + j + k == 2020: break if i + j + k == 2020: break print(f"\nAnswer: {i} + {j} + {k} = 2020; {i} * {j} * {k} = {i * j * k}")
def day10a(): """Day 10a.""" items = helpers.get_input_integers("day10") device = max(items) + 3 jolts = sorted(items) + [device] ones = 0 threes = 0 last = 0 for n in jolts: diff = n - last if diff == 1: ones += 1 elif diff == 3: threes += 1 else: print("ERROR: Bad diff!") last = n print(f"{ones} ones x {threes} threes = {ones * threes}")
def day9b(): """Day 9b.""" items = helpers.get_input_integers("day9") value = 105950735 length = 2 while True: print(f"Length: {length}") start = 0 end = length while end <= len(items): group = items[start:end] if sum(group) == value: print("SUCCESS!") print(group) weakness = min(group) + max(group) print(f"Weakness: {weakness} (length: {length}") sys.exit() start += 1 end += 1 length += 1