def is_safe(report): increasing = all(report[i] <= report[i+1] for i in range(len(report)-1)) decreasing = all(report[i] >= report[i+1] for i in range(len(report)-1)) if not (increasing or decreasing): return False for i in range(len(report) - 1): diff = abs(report[i] - report[i+1]) if not (1 <= diff <= 3): return False return True def solve_part1(reports): safe_count = 0 for report in reports: if is_safe(report): safe_count += 1 return safe_count def solve_part2(reports): safe_count = 0 for report in reports: if is_safe(report): safe_count += 1 continue for i in range(len(report)): temp_report = report[:i] + report[i+1:] if is_safe(temp_report): safe_count += 1 break return safe_count with open("./input.txt", "r") as f: reports = [] for line in f: reports.append(list(map(int, line.strip().split()))) result1 = solve_part1(reports) print(result1) result2 = solve_part2(reports) print(result2)