From 298b97b66dfec5c6b192c52fb9546ddf994b84e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Ytterstr=C3=B6m?= Date: Tue, 21 Nov 2023 20:10:51 +0100 Subject: [PATCH] Solve 2019:04 "Secure Container" --- 2019-python/output/day_04.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 2019-python/output/day_04.py diff --git a/2019-python/output/day_04.py b/2019-python/output/day_04.py new file mode 100644 index 0000000..d0464b9 --- /dev/null +++ b/2019-python/output/day_04.py @@ -0,0 +1,36 @@ +from collections import Counter +from output import answer, puzzleinput + +n = 4 +title = "Secure Container" + + +@puzzleinput(n) +def parse_input(data): + return data.split("-") + + +@answer(1, "{} combinations of valid passwords") +def part_1(range_values): + a, b = range_values + + def valid(s): + return "".join(sorted(s)) == s and any(x == y for x, y in zip(s, s[1:])) + + return sum(valid(str(pw)) for pw in range(int(a), int(b) + 1)) + + +@answer(2, "{} combinations of valid passwords, including important detail") +def part_2(range_values): + a, b = range_values + + def valid(s): + return "".join(sorted(s)) == s and 2 in Counter(s).values() + + return sum(valid(str(pw)) for pw in range(int(a), int(b) + 1)) + + +if __name__ == "__main__": + parsed = parse_input() + part_1(parsed) + part_2(parsed)