def is_safe_sequence(nums): if len(nums) <= 1: return True # Check first difference to determine if we're expecting increasing or decreasing diff = nums[1] - nums[0] increasing = diff > 0 for i in range(len(nums)-1): curr_diff = nums[i+1] - nums[i] # Check if difference is between 1 and 3 if abs(curr_diff) < 1 or abs(curr_diff) > 3: return False # Check if direction matches if increasing and curr_diff <= 0: return False if not increasing and curr_diff >= 0: return False return True def can_be_safe_with_removal(nums): if is_safe_sequence(nums): return True # Try removing each number for i in range(len(nums)): new_nums = nums[:i] + nums[i+1:] if is_safe_sequence(new_nums): return True return False # Read input with open("input.txt", "r") as f: lines = f.readlines() # Parse numbers sequences = [] for line in lines: nums = [int(x) for x in line.strip().split()] sequences.append(nums) # Part 1: Count safe sequences safe_count = sum(1 for seq in sequences if is_safe_sequence(seq)) print(str(safe_count)) # Part 2: Count sequences that can be made safe with one removal safe_with_removal_count = sum(1 for seq in sequences if can_be_safe_with_removal(seq)) print(str(safe_with_removal_count))