From daa607725779d983aa8eb5c09b2a78210a74224a Mon Sep 17 00:00:00 2001 From: Holly McFarland Date: Fri, 5 Dec 2025 17:37:11 -0500 Subject: [PATCH] day 1 --- .gitignore | 1 + day-01/part-1.py | 15 +++++++++++++++ day-01/part-2.py | 20 ++++++++++++++++++++ generate.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 .gitignore create mode 100644 day-01/part-1.py create mode 100644 day-01/part-2.py create mode 100644 generate.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a34381 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vs \ No newline at end of file diff --git a/day-01/part-1.py b/day-01/part-1.py new file mode 100644 index 0000000..a74d149 --- /dev/null +++ b/day-01/part-1.py @@ -0,0 +1,15 @@ +import aocd + +def main(data): + password = 0 + dial = 50 + for line in data.strip().split('\n'): + dial = (dial + int(line.replace(*'L-').replace(*'R '))) % 100 + password += not dial + return password + + +if __name__ == '__main__': + solution = main(aocd.get_data(day=1, year=2025)) + print(solution) + aocd.submit(solution, part='a', day=1, year=2025) \ No newline at end of file diff --git a/day-01/part-2.py b/day-01/part-2.py new file mode 100644 index 0000000..0974594 --- /dev/null +++ b/day-01/part-2.py @@ -0,0 +1,20 @@ +import aocd + +def main(data): + password = 0 + dial = 50 + for line in data.strip().split('\n'): + turn = int(line.replace(*'L-').replace(*'R ')) + neg = turn < 0 + password += abs(turn) // 100 + turn = abs(turn) % 100 + for _ in range(turn): + dial = (dial + neg*2-1) % 100 + password += not dial + return password + + +if __name__ == '__main__': + solution = main(aocd.get_data(day=1, year=2025)) + print(solution) + aocd.submit(solution, part='b', day=1, year=2025) \ No newline at end of file diff --git a/generate.py b/generate.py new file mode 100644 index 0000000..7dc922e --- /dev/null +++ b/generate.py @@ -0,0 +1,43 @@ +import os +import sys +from datetime import datetime + +def get_template(year, day, part): + part_letter = {1: 'a', 2: 'b'}[part] + + return f'''import aocd + +def main(data): + ... + +if __name__ == '__main__': + solution = main(aocd.get_data(day={day}, year={year})) + print(solution) + # aocd.submit(solution, part='{part_letter}', day={day}, year={year})''' + +def main(): + today = datetime.today() + + year = today.year + month = today.month + day = today.day if len(sys.argv) == 1 else int(sys.argv[1]) + + if month != 12 or not 1 <= day <= 25: + print('Advent of Code runs from December 1st to December 25th', file=sys.stderr) + sys.exit(1) + + directory_name = f'day-{day:02}' + if directory_name not in os.listdir(): + os.mkdir(directory_name) + + for part in (1, 2): + filename = f'part-{part}.py' + + if filename in os.listdir(directory_name): + continue + + with open(f'{directory_name}/{filename}', 'w') as f: + f.write(get_template(year, day, part)) + +if __name__ == '__main__': + main() \ No newline at end of file