Parser.cs 831 B

1234567891011121314151617181920212223242526272829
  1. using System.Text.RegularExpressions;
  2. namespace Day24;
  3. public partial class Parser
  4. {
  5. private static readonly char[] _separators = new char[] { '@', ',' };
  6. [GeneratedRegex(@".*")]
  7. private partial Regex LineMatch();
  8. public IEnumerable<Line3> Parse(string inputFile)
  9. {
  10. using var reader = File.OpenText(inputFile);
  11. while (!reader.EndOfStream)
  12. {
  13. var line = reader.ReadLine()!;
  14. var numbers = line.Split(_separators,
  15. StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)
  16. .Select(long.Parse).ToArray();
  17. yield return new Line3(
  18. Vec3.FromSpan(numbers),
  19. Vec3.FromSpan(numbers.AsSpan().Slice(3))
  20. );
  21. }
  22. }
  23. }