solve Day 01 in python
This commit is contained in:
43
Day01/python/solution.py
Normal file
43
Day01/python/solution.py
Normal 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
39
Day01/python/solution2.py
Normal 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}")
|
||||
Reference in New Issue
Block a user