44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
|
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")
|