Spaces:
Running
Running
| 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) |