def part1(): file = open("input.txt") lines = [int(i) for i in file.readlines()] lines = sorted(lines) diffs = {1: 0, 3: 0} diffs[lines[0]] += 1 lines.append(max(lines) + 3) for i in range(1, len(lines)): diff = lines[i] - lines[i - 1] diffs[diff] += 1 print("Part 1 %d " % (diffs[1] * diffs[3])) def count_options(og, adapters): amount = 0 adap = list.copy(adapters) if len(adap) == 1: return 1 while True: num = adap.pop(0) if num > og + 3: break amount += count_options(num, adap) return amount def part2(): file = open("input.txt") adapters = [0] [adapters.append(int(i)) for i in file.readlines()] adapters.append(max(adapters) + 3) adapters = sorted(adapters) og = adapters.pop(0) ans = count_options(og, adapters) print("Part 2: %d" % ans) if __name__ == "__main__": part1() part2()