def part_1(): code = get_ints_by_lines('9.txt') log(code) for idx in range(PREAMBLE_LEN, len(code)): log(f"checking {idx}") if not in_preamble(code[idx - PREAMBLE_LEN:idx], code[idx]): log(f"Found {code[idx]} at idx {idx}") return code[idx] return None
def part_2(): input_arr = get_ints_by_lines('1.txt') for x in range(0, len(input_arr)): for y in range(x + 1, len(input_arr)): for z in range(y + 1, len(input_arr)): val1, val2, val3 = input_arr[x], input_arr[y], input_arr[z] if val1 + val2 + val3 == 2020: log(f"{val1} + {val2} + {val3} = {val1 + val2 + val3}") return val1 * val2 * val3 log('No solution')
def part_1(): input_arr = get_ints_by_lines('1.txt') # Loop through every pair in the array for x in range(0, len(input_arr)): for y in range(x + 1, len(input_arr)): val1, val2 = input_arr[x], input_arr[y] if val1 + val2 == 2020: log(f"{val1} + {val2} = {val1 + val2} (returning {val1 * val2})" ) return val1 * val2 log('No solution')
def part_1(): jolts = [0] + sorted(get_ints_by_lines('10.txt')) jolts += [jolts[-1] + 3] log(jolts) diffs = [0, 0, 0, 0] for idx in range(1, len(jolts)): d = jolts[idx] - jolts[idx - 1] diffs[d] += 1 log(diffs) return diffs[1] * diffs[3]
def part_2(): code = get_ints_by_lines('9.txt') goal = part_1() for idx in range(len(code)): list = [] sub_idx = idx total = 0 while total < goal and sub_idx < len(code): total += code[sub_idx] list += [code[sub_idx]] sub_idx += 1 if total == goal: log('FOUND IT') log(list) return min(list) + max(list) return None
def part_2(): jolts = [0] + sorted(get_ints_by_lines('10.txt')) jolts += [jolts[-1] + 3] arrangements = recursive_get_lists(jolts) return arrangements