advent24-llm / day02 /solution_claude-3-5-sonnet-20241022.py
jerpint's picture
Add solution files
a4da721
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))