From 5199074512eae8137500414bec49e333e8218458 Mon Sep 17 00:00:00 2001 From: Holly McFarland Date: Fri, 5 Dec 2025 23:28:48 -0500 Subject: [PATCH] day 2 --- day-02/part-1.py | 22 ++++++++++++++++++++++ day-02/part-2.py | 23 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 day-02/part-1.py create mode 100644 day-02/part-2.py diff --git a/day-02/part-1.py b/day-02/part-1.py new file mode 100644 index 0000000..15a4307 --- /dev/null +++ b/day-02/part-1.py @@ -0,0 +1,22 @@ +import aocd + +def parse(data): + for range_ in data.strip().split(','): + yield range_.split('-') + +def num_invalid(low, high): + low_int, high_int = int(low), int(high) + + for id in map(str, range(low_int, high_int+1)): + if len(id) % 2: continue + if id[:len(id)//2] == id[len(id)//2:]: + yield int(id) + +def main(data): + ranges = parse(data) + return sum(sum(num_invalid(*r)) for r in ranges) + +if __name__ == '__main__': + solution = main(aocd.get_data(day=2, year=2025)) + print(solution) + aocd.submit(solution, part='a', day=2, year=2025) \ No newline at end of file diff --git a/day-02/part-2.py b/day-02/part-2.py new file mode 100644 index 0000000..ed15515 --- /dev/null +++ b/day-02/part-2.py @@ -0,0 +1,23 @@ +import aocd + +import re + +def parse(data): + for range_ in data.strip().split(','): + yield range_.split('-') + +def num_invalid(low, high): + low_int, high_int = int(low), int(high) + + for id in range(low_int, high_int+1): + if re.match(r'^((.+)\2+)$', str(id)): + yield int(id) + +def main(data): + ranges = parse(data) + return sum(sum(num_invalid(*r)) for r in ranges) + +if __name__ == '__main__': + solution = main(aocd.get_data(day=2, year=2025)) + print(solution) + aocd.submit(solution, part='b', day=2, year=2025) \ No newline at end of file