"""day1a solution."""
from typing import Optional
INPUT = "day01/input.txt"
INPUT_SMALL = "day01/input-small.txt"
[docs]
def get_first_last(line: str) -> tuple[str, str]:
"""Returns first and last numeric character of a string.
It can be the same character.
Args:
line (str): string to parse
Raises:
ValueError: When there are no numbers in the string
Returns:
tuple[str, str]: first char, last char
"""
first: Optional[str] = None
last: str
for char in line:
if char.isnumeric():
if first is None:
first = char
last = char
if first is None:
raise ValueError("first should be set by now")
return (first, last)
[docs]
def part1(lines: list[str]) -> int:
"""Runs day1/part1 of adventofcode2023.
Args:
lines (list[str]): list of lines to parse
Returns:
int: sum of results for each line.
"""
total = 0
for line in lines:
first, last = get_first_last(line)
data = int(first + last)
total += data
return total
[docs]
def main() -> None:
"""Grabs input then processes it."""
lines = get_input(INPUT)
print(part1(lines))
if __name__ == "__main__":
main()