# -*- coding: utf-8 -*- from abc import ABC from enum import Enum from typing import Iterator from aoc import BaseAssignment, I, T class Assignment(BaseAssignment, ABC): def run(self, input: Iterator[list[int]]) -> int: input = list(input) print(input) return sum([int(f"{item[0]}{item[-1]}") for item in input]) class AssignmentOne(Assignment): example_result = 142 def parse_item(self, item: str) -> list[int]: return [int(i) for i in item if i.isdigit()] class AssignmentTwo(Assignment): example_result = 281 class Numbers(Enum): one = 1 two = 2 three = 3 four = 4 five = 5 six = 6 seven = 7 eight = 8 nine = 9 @staticmethod def _parse_item(item: str): numbers = { index: number for index, number in [ (item.find(number.name), number.value) for number in AssignmentTwo.Numbers ] if index >= 0 } for index, i in enumerate(item): if i.isdigit(): numbers[index] = int(i) return [ value for key, value in sorted(numbers.items(), key=lambda item: item[0]) ] def parse_item(self, item: str) -> list[int]: return self._parse_item(item)