Spaces:
Running
Running
# with open("test.txt") as f: | |
# inputs = f.readlines() | |
with open("input.txt") as f: | |
inputs = f.readlines() | |
def is_increasing_or_decreasing(data): | |
sorted_data = sorted(data) | |
if data[0] > data[-1]: | |
return data == sorted_data[::-1] | |
else: | |
return data == sorted_data | |
def adjacency_check(data): | |
for i in range(len(data)-1): | |
abs_diff = abs(data[i] - data[i+1]) | |
if not (0 < abs_diff < 4): | |
return False | |
return True | |
def is_safe(data: list[str]) -> bool: | |
return is_increasing_or_decreasing(data) and adjacency_check(data) | |
total = 0 | |
for line in inputs: | |
data = [int(i) for i in line.split(" ")] | |
if is_safe(data): | |
total += 1 | |
print(total) | |
## Part 2 | |
# ... just brute force it? | |
total = 0 | |
for line in inputs: | |
data = [int(i) for i in line.split(" ")] | |
if is_safe(data): | |
total += 1 | |
else: | |
for i in range(len(data)): | |
new_data = data.copy() | |
new_data.pop(i) | |
if is_safe(new_data): | |
total += 1 | |
break | |
print(total) | |