private static Direction GetNextDirection(Direction currentDirection, Point currentPoint, string[] lines) { foreach (Direction direction in Enum.GetValues(typeof(Direction))) { if (direction == DirectionHelpers.GetOppositeDirection(currentDirection)) { continue; } var upPoint = DirectionHelpers.GetNextPoint(direction, currentPoint); var upLetter = DirectionHelpers.GetLetter(lines, upPoint); if (upLetter != ' ') { return(direction); } } throw new Exception("wheeeere"); }
public static void Main(string[] args) { int steps = 1; string letterString = ""; var lines = File.ReadAllLines("input.txt"); Direction currentDirection = Direction.Down; var indexOf = lines[0].IndexOf('|'); var currentPoint = new Point(indexOf, 0); while (true) { currentPoint = DirectionHelpers.GetNextPoint(currentDirection, currentPoint); var letter = DirectionHelpers.GetLetter(lines, currentPoint); if (letter == ' ') { break; } if (letter != '+' && letter != '-' && letter != '|') { letterString += letter; } if (letter == '+') { currentDirection = GetNextDirection(currentDirection, currentPoint, lines); } steps++; } Console.WriteLine(letterString); Console.WriteLine(steps); }