Spaces:
Running
Running
| def is_safe(report): | |
| increasing = True | |
| decreasing = True | |
| for i in range(len(report) - 1): | |
| diff = report[i+1] - report[i] | |
| if not (1 <= abs(diff) <= 3): | |
| return False | |
| if diff > 0: | |
| decreasing = False | |
| if diff < 0: | |
| increasing = False | |
| return increasing or decreasing | |
| def is_safe_with_removal(report): | |
| if is_safe(report): | |
| return True | |
| for i in range(len(report)): | |
| modified_report = report[:i] + report[i+1:] | |
| if is_safe(modified_report): | |
| return True | |
| return False | |
| def count_safe_reports(file_path, part_two=False): | |
| with open(file_path, 'r') as file: | |
| reports = [list(map(int, line.split())) for line in file] | |
| safe_count = 0 | |
| for report in reports: | |
| if part_two: | |
| if is_safe_with_removal(report): | |
| safe_count += 1 | |
| else: | |
| if is_safe(report): | |
| safe_count += 1 | |
| return safe_count | |
| file = "input.txt" | |
| # Part One | |
| result1 = count_safe_reports(file, part_two=False) | |
| print(result1) | |
| # Part Two | |
| result2 = count_safe_reports(file, part_two=True) | |
| print(result2) |