public Solution(IEnumerable <string> input)
        {
            _simulator = new ConwaySimulator(NumberOfIterations, NextTileState);

            _tiles = input
                     .Select(ParseDirections)
                     .Select(NavigateToTile)
                     .ToList();
        }
        public Solution(IReadOnlyList <string> input)
        {
            _simulator = new ConwaySimulator(NumberOfIterations, NextCellState);

            var height = input.Count;
            var width  = input[0].Length;

            _initialState = new Dictionary <(int, int), bool>();

            for (var x = 0; x < width; x++)
            {
                for (var y = 0; y < height; y++)
                {
                    _initialState[(x, y)] = input[y][x] == '#';