Spaces:
Running
Running
File size: 1,428 Bytes
a4da721 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
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)) |