lines = open('inputs/day9.txt').readlines() def differences(line: str) -> list[str]: new_line = [int(x) for x in line.strip('\n').split(' ')] diffs = [new_line] while sum([abs(x) for x in new_line]) != 0: new_line = [new_line[i+1] - new_line[i] for i in range(len(new_line)-1)] diffs.append(new_line) return diffs def predict_next(diffs: list[int]) -> int: for i in range(1, len(diffs))[::-1]: diffs[i-1].append(diffs[i-1][-1] + diffs[i][-1]) return diffs[0][-1] def predict_first(diffs: list[int]) -> int: for i in range(1, len(diffs))[::-1]: diffs[i-1].insert(0, diffs[i-1][0] - diffs[i][0]) return diffs[0][0] predictions_next = [] predictions_first = [] for line in lines: diffs = differences(line) predictions_next.append(predict_next(diffs)) predictions_first.append(predict_first(diffs)) print(f"Solution Part 1: {sum(predictions_next)}") print(f"Solution Part 1: {sum(predictions_first)}")