/// <summary> /// converts the position list to direction list /// </summary> /// <param name="sol">The sol.</param> /// <returns></returns> private Stack <Direction> ToDirections(ISolution <Position> sol) { List <Direction> directions = new List <Direction>(sol.Count() - 1); Position last = sol.Get().Data; foreach (State <Position> state in sol) { Position next = state.Data; int nextRow = next.Row; int nextCol = next.Col; int lastRow = last.Row; int lastCol = last.Col; if (nextRow > lastRow) { directions.Add(Direction.Down); } else if (nextRow < lastRow) { directions.Add(Direction.Up); } else if (nextCol < lastCol) { directions.Add(Direction.Left); } else { directions.Add(Direction.Right); } last = next; } return(new Stack <Direction>(directions)); }