def part2(s: str) -> int: adapters = input_to_int(s) adapters.append(0) adapters.sort() dp = [0] * len(adapters) dp[0] = 1 for i in range(len(adapters)): for j in range(1, 4): if j > i: break elif adapters[i] <= adapters[i - j] + 3: dp[i] += dp[i - j] return dp[-1]
def part1(s: str) -> int: adapters = input_to_int(s) adapters.append(0) adapters.sort() jolt_1 = 0 jolt_3 = 1 for i in range(len(adapters) - 1): if adapters[i + 1] - adapters[i] > 3: break elif adapters[i + 1] - adapters[i] == 1: jolt_1 += 1 elif adapters[i + 1] - adapters[i] > 1: jolt_3 += 1 return jolt_1 * jolt_3
def TTT_input(state): result = None while not result: try: square_str = input("Pick a square: ") square_str_list = square_str.split(",") if len(square_str_list) != 2: raise ValueError( "Could not parse (x, y) coordinates from input.") result = [utils.input_to_int(entry) for entry in square_str_list] except ValueError as err: print(err) continue return 3 * result[1] + result[0]
def part2(s: str) -> int: nums = input_to_int(s) return find_product_of_three(nums, 2020)
def part2(s: str, n: int) -> int: numbers = input_to_int(s) min_n, max_n = find_contigious_set(numbers, n) return min_n + max_n
def part1(s: str, preamble_len: int) -> int: numbers = input_to_int(s) n = find_wrong_number(numbers, preamble_len) return n