From 40a85a3c10ef8229dc42c9e2000afd7324ca72b5 Mon Sep 17 00:00:00 2001 From: Jake Pullen Date: Mon, 11 May 2026 07:14:24 +0100 Subject: [PATCH] a --- 2025/03/part_1_solution.py | 54 ++++++++++++++++++++++++++++++++++-- 2025/03/part_2_solution.py | 56 ++++++++++++++++++++++++++++++++++++++ 2025/04/part_1_solution.py | 7 +++++ 2025/05/part_1_solution.py | 7 +++++ get_puzzle_text.py | 2 +- 5 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 2025/03/part_2_solution.py create mode 100644 2025/04/part_1_solution.py create mode 100644 2025/05/part_1_solution.py diff --git a/2025/03/part_1_solution.py b/2025/03/part_1_solution.py index 6cfb206..8a5fd96 100644 --- a/2025/03/part_1_solution.py +++ b/2025/03/part_1_solution.py @@ -1,7 +1,55 @@ -testing = True +testing = False if not testing: with open(r"2025/03/input.txt", "r") as file: input = file.read() else: - input = ''' -''' + input = '''987654321111111 +811111111111119 +234234234234278 +818181911112111''' + +testing_answer = 357 + +banks = input.split('\n') +mem = {} +jolts = [] + +for bank_number, battery_bank in enumerate(banks): + # scan the whole bank + # find the highest number + # store it and remember its position + # need to handle if the last digit is the highest as that wont work... + + bank_length = len(battery_bank) + current_high:int = 0 + current_high_pos: int + for position, battery in enumerate(battery_bank): + if position == bank_length-1: + continue + battery = int(battery) + if battery > current_high: + current_high = battery + current_high_pos = position + mem[bank_number] = (current_high, current_high_pos) + # print(current_high, current_high_pos) +#print(mem) + +for bank_number, battery_bank in enumerate(banks): + current_high:int = 0 + current_high_pos: int + for position, battery in enumerate(battery_bank): + if position <= mem[bank_number][1]: + #print('skip') + continue + battery = int(battery) + if battery > current_high: + current_high = battery + jolts.append(mem[bank_number][0]*10 + current_high) + +# print(jolts) +sum_jolts = 0 +for thing in jolts: + sum_jolts += thing +if testing: + print(sum_jolts == testing_answer) +print(sum_jolts) \ No newline at end of file diff --git a/2025/03/part_2_solution.py b/2025/03/part_2_solution.py new file mode 100644 index 0000000..9318879 --- /dev/null +++ b/2025/03/part_2_solution.py @@ -0,0 +1,56 @@ +testing = True + +if not testing: + with open(r"2025/03/input.txt", "r") as file: + input = file.read() +else: + input = '''987654321111111 +811111111111119 +234234234234278 +818181911112111''' + +testing_answer = 3121910778619 + +banks = input.split('\n') +mem = {} +jolts = [] + +for bank_number, battery_bank in enumerate(banks): + # scan the whole bank + # find the highest number + # store it and remember its position + # need to handle if the last digit is the highest as that wont work... + + bank_length = len(battery_bank) + current_high:int = 0 + current_high_pos: int + for position, battery in enumerate(battery_bank): + if position == bank_length-12: + continue + battery = int(battery) + if battery > current_high: + current_high = battery + current_high_pos = position + mem[bank_number] = (current_high, current_high_pos) + # print(current_high, current_high_pos) +#print(mem) + +for bank_number, battery_bank in enumerate(banks): + current_high:int = 0 + current_high_pos: int + for position, battery in enumerate(battery_bank): + if position <= mem[bank_number][1]: + #print('skip') + continue + battery = int(battery) + if battery > current_high: + current_high = battery + jolts.append(mem[bank_number][0]*10 + current_high) + +# print(jolts) +sum_jolts = 0 +for thing in jolts: + sum_jolts += thing +if testing: + print(sum_jolts == testing_answer) +print(sum_jolts) \ No newline at end of file diff --git a/2025/04/part_1_solution.py b/2025/04/part_1_solution.py new file mode 100644 index 0000000..26a669f --- /dev/null +++ b/2025/04/part_1_solution.py @@ -0,0 +1,7 @@ +testing = True +if not testing: + with open(r"2025/04/input.txt", "r") as file: + input = file.read() +else: + input = ''' +''' diff --git a/2025/05/part_1_solution.py b/2025/05/part_1_solution.py new file mode 100644 index 0000000..2cb517d --- /dev/null +++ b/2025/05/part_1_solution.py @@ -0,0 +1,7 @@ +testing = True +if not testing: + with open(r"2025/05/input.txt", "r") as file: + input = file.read() +else: + input = ''' +''' diff --git a/get_puzzle_text.py b/get_puzzle_text.py index 7fd54d4..315aa86 100644 --- a/get_puzzle_text.py +++ b/get_puzzle_text.py @@ -135,4 +135,4 @@ def populate_data(year = current_year, day=current_day): else: print("Something went wrong. Check the puzzle text.") -populate_data() +populate_data(2025,4)