From a71bb20141188054f61b86cdf64825d9a80e0820 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 8 Dec 2019 20:07:14 +0100 Subject: [PATCH] 2019: d04: ex1: add solution --- 2019/d04/ex1/ex1.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 2019/d04/ex1/ex1.py diff --git a/2019/d04/ex1/ex1.py b/2019/d04/ex1/ex1.py new file mode 100755 index 0000000..460b7d8 --- /dev/null +++ b/2019/d04/ex1/ex1.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python + +from typing import Iterator + + +def is_valid_password(p: int) -> bool: + digits = str(p) + + def has_adjacent_digit(): + for (a, b) in zip(digits, digits[1:]): + if a == b: + return True + return False + + def digits_never_decrease(): + return all(a == b for a, b in zip(sorted(digits), digits)) + + return has_adjacent_digit() and digits_never_decrease() + + +def compute_pass(begin: int, end: int) -> Iterator[int]: + for p in range(begin, end + 1): + if is_valid_password(p): + yield p + + +def main() -> None: + begin = 264793 + end = 803935 + print(sum(1 for p in compute_pass(begin, end))) + + +if __name__ == "__main__": + main()