private static SnakeOrLadderEntity ParseLine(string line) { if (line.StartsWith("#")) { //Ignorring lines starting with #, those can be used for comments return(null); } if (string.IsNullOrWhiteSpace(line)) { //Ignorring empty lines return(null); } string[] lineParts = line.Split(' '); if (lineParts.Length < 2) { Console.WriteLine($"ERROR: Head or tail position is missing in line. Line content: {line}"); return(null); } if (lineParts.Length > 2) { Console.WriteLine($"WARNING: Line contents additional data: {line}. Additional data in the line will be ignored."); } int headPosition; int tailPosition; try { headPosition = int.Parse(lineParts[0]); tailPosition = int.Parse(lineParts[1]); } catch { Console.WriteLine($"ERROR: Components of a line can't be parsed to int. Line content: {line}"); return(null); } if (!SnakeOrLadderValidator.Validate(headPosition, tailPosition)) { return(null); } SnakeOrLadderEntity snakeOrLadder = new SnakeOrLadderEntity(headPosition, tailPosition); return(snakeOrLadder); }
private static SnakeOrLadderEntity[] ParseLines(string[] lines) { List <SnakeOrLadderEntity> snakesAndLaddersOnBoard = new List <SnakeOrLadderEntity>(); foreach (string line in lines) { SnakeOrLadderEntity snakeOrLadder = ParseLine(line); if (snakeOrLadder != null) { Console.WriteLine($"Loadded a {snakeOrLadder.GetVariant()} from {snakeOrLadder.HeadPosition} to {snakeOrLadder.TailPosition}."); snakesAndLaddersOnBoard.Add(snakeOrLadder); } } if (!SnakeOrLadderValidator.ValidateSnakesLadderCombinations(snakesAndLaddersOnBoard)) { return(new SnakeOrLadderEntity[0]); } return(snakesAndLaddersOnBoard.ToArray()); }