From 4fd095409b2f155d131ab33011e4181e5f65d484 Mon Sep 17 00:00:00 2001 From: aaron Date: Sat, 3 Dec 2022 13:29:10 +0100 Subject: [PATCH] add solution for day 1 --- 1/calories.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/1/calories.py b/1/calories.py index 2929bbc..6157b8d 100644 --- a/1/calories.py +++ b/1/calories.py @@ -3,34 +3,39 @@ from aocd import submit class Elf: ''' - Elf object + object which holds a a list of calories + carried by this particular elf ''' calories = list() def __init__(self, numbers: list) -> None: ''' - data class constructor + constructor ''' self.calories = numbers.copy() + def __lt__(self, other) -> bool: + ''' + compare if sum of calorie is less than other + ''' + return (self.sum_calories() < other.sum_calories()) + + def __repr__(self) -> str: + ''' + print string representation of object + ''' + return f'{str(self.calories)}' + def sum_calories(self) -> int: ''' calculate the total calories carried by this elf ''' return sum(self.calories) - def __lt__(self, other) -> bool: - ''' - check if sum calories is less than other - ''' - return (self.sum_calories() < other.sum_calories()) - - def __repr__(self) -> str: - return f'{str(self.calories)}' - def parse_input(data: list) -> list: ''' parses the input data and generates a list of elfs + from the input data string ''' # split input string into list splits = data.split('\n') @@ -49,9 +54,9 @@ def parse_input(data: list) -> list: if __name__ == "__main__": # get puzzle and parse data puzzle = Puzzle(year=2022, day=1) - data = puzzle.input_data - elfs = parse_input(data) - # sort elfs based on calories + + # get a list of elfs and sort based on calories + elfs = parse_input(puzzle.input_data) elfs = sorted(elfs, reverse=True) # part a: submit biggest number of calories @@ -60,8 +65,6 @@ if __name__ == "__main__": submit(answer, part='a', day=1, year=2022) # part b: submit the calorie sum of the top 3 elfs - answer = 0 - for elf in elfs[:3]: - answer += elf.sum_calories() + answer = sum([ elf.sum_calories() for elf in elfs[:3]]) print(f'answer part b: {answer}') submit(answer, part='b', day=1, year=2022)