Source code for day24.lib.parsers
"""Day23 parsers."""
from day24.lib.classes import Hailstone, Vector3
[docs]
def parse_vector3(line: str) -> Vector3:
"""Parse a vector3.
E.g. 1,2,3
"""
line = line.strip()
x, y, z = line.split(",")
return Vector3(int(x), int(y), int(z))
[docs]
def parse_input(filename: str) -> list[Hailstone]:
r"""Parse input lines.
Lines in the format ``1,2,3@4,5,6\n``.
Args:
filename (str): file to open
Returns:
list[Hailstone]: list of Hailstones
"""
result: list[Hailstone] = []
with open(filename, "r", encoding="utf8") as file:
for line in file:
line = line.strip()
left, right = line.split("@")
pos, velocity = parse_vector3(left), parse_vector3(right)
result.append(Hailstone(pos, velocity))
return result