Index

Day 02

part2

AoC link
data = """\
7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9
"""

# with open("2024/day02/data.txt") as f:
#     data = f.read()


def diff(data: list[int]) -> list[int]:
    return [x - y for x, y in zip(data[:-1], data[1:])]


def is_safe(data: list[int]) -> bool:
    line_diff = diff(data)

    if max(line_diff) > 3:
        return False
    if min(line_diff) < -3:
        return False
    if all(d > 0 for d in line_diff) or all(d < 0 for d in line_diff):
        return True
    return False


safe = []
for line in data.splitlines():
    data_rem = False
    line_data = [int(x) for x in line.split(" ")]

    if is_safe(line_data):
        safe.append(True)
        continue

    for n in range(len(line_data)):
        is_safe2 = is_safe(line_data[:n] + line_data[n + 1 :])
        if is_safe2:
            safe.append(True)
            break

    safe.append(False)


return_value = sum(safe)
print(return_value)


Output: