Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
| 03 | [✓][032015] | | | | [✓][032019] | [✓][032020] | [✓][032021] | [✓][032022] | [✓][032023] | [✓][032024] | [✓][032025] |
| 04 | [✓][042015] | | | | [✓][042019] | [✓][042020] | [✓][042021] | [✓][042022] | [✓][042023] | [✓][042024] | [✓][042025] |
| 05 | [✓][052015] | | | | | [✓][052020] | | [✓][052022] | [✓][052023] | [✓][052024] | [✓][052025] |
| 06 | [✓][062015] | | | | | [✓][062020] | | [✓][062022] | [✓][062023] | [✓][062024] | |
| 06 | [✓][062015] | | | | | [✓][062020] | | [✓][062022] | [✓][062023] | [✓][062024] | [✓][062025] |
| 07 | [✓][072015] | | | | | [✓][072020] | | [✓][072022] | [✓][072023] | [✓][072024] | |
| 08 | [✓][082015] | | | | | [✓][082020] | | [✓][082022] | [✓][082023] | [✓][082024] | |
| 09 | [✓][092015] | | | | | [✓][092020] | | [✓][092022] | [✓][092023] | [✓][092024] | |
Expand Down Expand Up @@ -134,6 +134,7 @@
[032025]: https://github.com/fabiogallotti/adventofcode/tree/master/src/year2025/day03
[042025]: https://github.com/fabiogallotti/adventofcode/tree/master/src/year2025/day04
[052025]: https://github.com/fabiogallotti/adventofcode/tree/master/src/year2025/day05
[062025]: https://github.com/fabiogallotti/adventofcode/tree/master/src/year2025/day06

## To run an exercise ##

Expand Down
10 changes: 10 additions & 0 deletions src/year2025/day06/exercises.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from functions.read_input import read_input
from inputs.path import PATH

from .functions import part_1, part_2

data = read_input(f"{PATH}/2025/day06.txt")

print(f"First part: {part_1(data)}")

print(f"Second part: {part_2(data)}")
77 changes: 77 additions & 0 deletions src/year2025/day06/functions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
def preprocessing(data):
list_numbers = []
operations = [elem for elem in data[-1].split(" ") if elem]

for elem in data[:-1]:
numbers = elem.split(" ")
list_numbers.append([int(num) for num in numbers if num])

vertical_list = list(zip(*list_numbers))

return vertical_list, operations


def part_1(data):
list_numbers, operations = preprocessing(data)
list_total = []
for i in range(len(list_numbers)):
if operations[i] == "+":
list_total.append(sum(list_numbers[i]))
elif operations[i] == "*":
product = 1
for num in list_numbers[i]:
product *= num
list_total.append(product)

return sum(list_total)


def preprocessing_part2(data):
list_numbers = []
operations_with_whitespaces = [elem for elem in data[-1].split(" ")]
operations = [elem for elem in data[-1].split(" ") if elem]
i = [i for i, x in enumerate(operations_with_whitespaces) if x]
lengths = [j - k for k, j in zip(i, [*i[1:], len(operations_with_whitespaces)])]

for elem in data[:-1]:
numbers = elem.split(" ")

for i in range(len(numbers)):
if numbers[i] == "":
numbers[i] = "0"

numbers = [n for num in numbers for n in num]

for i in range(len(numbers)):
if numbers[i] == "0":
numbers[i] = ""

list_numbers.append(numbers)

vertical_list = list(zip(*list_numbers))
vertical_list_of_list = [
vertical_list[sum(lengths[:i]) : sum(lengths[: i + 1])] for i in range(len(lengths))
]

list_numbers = [
[int("".join(x for x in elem if x != "")) for elem in list_ if any(x != "" for x in elem)]
for list_ in vertical_list_of_list
]

return list_numbers, operations


def part_2(data):
list_numbers, operations = preprocessing_part2(data)

list_total = []
for i in range(len(list_numbers)):
if operations[i] == "+":
list_total.append(sum(list_numbers[i]))
elif operations[i] == "*":
product = 1
for num in list_numbers[i]:
product *= num
list_total.append(product)

return sum(list_total)
16 changes: 16 additions & 0 deletions tests/2025/test_2025day06.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from year2025.day06.functions import part_1, part_2

EXAMPLE_1 = [
"123 328 51 64 ",
" 45 64 387 23 ",
" 6 98 215 314",
"* + * + ",
]


def test_part_1():
assert part_1(EXAMPLE_1) == 4277556


def test_part_2():
assert part_2(EXAMPLE_1) == 3263827