46 lines
		
	
	
		
			1003 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1003 B
		
	
	
	
		
			Python
		
	
	
	
	
	
import sys
 | 
						|
 | 
						|
lines = sys.stdin.read().splitlines()
 | 
						|
 | 
						|
lookups_1 = {str(d): d for d in range(1, 10)}
 | 
						|
lookups_2 = lookups_1 | {
 | 
						|
    d: i + 1
 | 
						|
    for i, d in enumerate(
 | 
						|
        (
 | 
						|
            "one",
 | 
						|
            "two",
 | 
						|
            "three",
 | 
						|
            "four",
 | 
						|
            "five",
 | 
						|
            "six",
 | 
						|
            "seven",
 | 
						|
            "eight",
 | 
						|
            "nine",
 | 
						|
        )
 | 
						|
    )
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
def find_values(lookups: dict[str, int]) -> list[int]:
 | 
						|
    values: list[int] = []
 | 
						|
 | 
						|
    for line in filter(bool, lines):
 | 
						|
        first_digit = min(
 | 
						|
            lookups,
 | 
						|
            key=lambda lookup: index
 | 
						|
            if (index := line.find(lookup)) >= 0
 | 
						|
            else len(line),
 | 
						|
        )
 | 
						|
        last_digit = max(
 | 
						|
            lookups,
 | 
						|
            key=lambda lookup: index if (index := line.rfind(lookup)) >= 0 else -1,
 | 
						|
        )
 | 
						|
 | 
						|
        values.append(10 * lookups[first_digit] + lookups[last_digit])
 | 
						|
 | 
						|
    return values
 | 
						|
 | 
						|
 | 
						|
print(f"answer 1 is {sum(find_values(lookups_1))}")
 | 
						|
print(f"answer 2 is {sum(find_values(lookups_2))}")
 |