advent_of_code_2022/Day01/python/solution.py

44 lines
1.4 KiB
Python
Raw Normal View History

2023-12-01 18:13:27 +00:00
def find_max_calories(file_path):
"""
Finds the Elf carrying the most calories from a file.
Args:
file_path (str): Path to the file containing calorie counts.
Returns:
int, int: The index of the Elf and the maximum calories carried by that Elf.
"""
with open(file_path, 'r') as file:
calories_list = file.read()
# Split the input into groups of calorie counts for each Elf
elf_calorie_groups = calories_list.strip().split('\n\n')
# Sum the calories for each Elf
max_calories = 0
max_elf_index = 0
for index, group in enumerate(elf_calorie_groups):
sum_calories = sum(map(int, group.split('\n')))
if sum_calories > max_calories:
max_calories = sum_calories
max_elf_index = index + 1
return max_elf_index, max_calories
def test():
# Test the function
max_elf_index, max_calories = find_max_calories('../test.txt')
# Assertions for testing
assert max_elf_index == 4, f"Expected Elf 4 but got Elf {max_elf_index}"
assert max_calories == 24000, f"Expected 24000 calories but got {max_calories}"
print(f"Test Passed: Elf {max_elf_index} is carrying the most calories: {max_calories} Calories\n")
# Run the test
test()
# Use the function with actual input file
max_elf_index, max_calories = find_max_calories('../input.txt')
print(f"From input.txt: Elf {max_elf_index} is carrying the most calories: {max_calories} Calories")