From 0a5c1f77d01fc0bd166494787f24562e2fd3a9e9 Mon Sep 17 00:00:00 2001 From: Botond Hende Date: Wed, 11 Dec 2024 10:18:23 +0100 Subject: renamed day folders to two digit format --- 2024/day02/solve2.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 2024/day02/solve2.py (limited to '2024/day02/solve2.py') diff --git a/2024/day02/solve2.py b/2024/day02/solve2.py new file mode 100644 index 0000000..8e2f8e7 --- /dev/null +++ b/2024/day02/solve2.py @@ -0,0 +1,42 @@ +from typing import Generator + +safe = unsafe = 0 + + +def is_safe_with_dampening(report: str) -> bool: + numbers = [int(elem) for elem in report.split()] + for ii in range(len(numbers)): + if is_safe((elem for idx, elem in enumerate(numbers) if idx != ii)): + return True + + return False + + +def is_safe(numbers: Generator[int, None, None]) -> bool: + last_num = 0 + increase = True + for ii, num in enumerate(numbers): + if ii != 0: + if ii == 1: + increase = num > last_num + + if (num > last_num) != increase: + return False + + diff = abs(num - last_num) + if diff < 1 or diff > 3: + return False + + last_num = num + + return True + + +with open("input") as f: + for report in f.readlines(): + if is_safe_with_dampening(report): + safe += 1 + else: + unsafe += 1 + +print(f"safe: {safe}\nunsafe: {unsafe}") \ No newline at end of file -- cgit v1.2.3-70-g09d2