solve Day 01 in python

This commit is contained in:
2023-12-01 19:13:27 +01:00
parent 54b6bcb45e
commit e0f219664f
5 changed files with 2410 additions and 0 deletions

43
Day01/python/solution.py Normal file
View File

@@ -0,0 +1,43 @@
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")

39
Day01/python/solution2.py Normal file
View File

@@ -0,0 +1,39 @@
def find_top_three_calories(file_path):
"""
Finds the top three Elves carrying the most calories from a file.
Args:
file_path (str): Path to the file containing calorie counts.
Returns:
int: The sum of calories carried by the top three Elves.
"""
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')
# Calculate calories for each Elf
calories_sums = [sum(map(int, group.split('\n'))) for group in elf_calorie_groups]
# Find the top three sums
top_three_sums = sorted(calories_sums, reverse=True)[:3]
return sum(top_three_sums)
def test():
# Test the function
total_calories = find_top_three_calories('../test.txt')
# Assertion for testing
assert total_calories == 45000, f"Expected 45000 calories but got {total_calories}"
print(f"Test Passed: Total calories carried by the top three Elves: {total_calories}\n")
# Run the test
test()
# Use the function with actual input file
total_calories = find_top_three_calories('../input.txt')
print(f"From input.txt: Total calories carried by the top three Elves: {total_calories}")