/// <summary>
        /// Constructor for Command Line with paths and function params
        /// </summary>
        /// <param name="function"></param>
        /// <param name="startingStatePath"></param>
        /// <param name="solutionPath"></param>
        /// <param name="infoPath"></param>
        protected PuzzleSolver(string startingStatePath, string solutionPath, string infoPath)
        {
            StateDataPack data = DataReader.LoadStartingState(startingStatePath);

            SolutionPath  = solutionPath;
            InfoPath      = infoPath;
            DimensionX    = data.DimensionX;
            DimensionY    = data.DimensionY;
            StartingState = new State(DimensionX, DimensionY, data.Grid, DirectionEnum.None, 0, new List <DirectionEnum>());
            CurrentState  = StartingState;
        }
        /// <summary>
        /// Constructor for Command Line with paths and function params
        /// </summary>
        /// <param name="function"></param>
        /// <param name="startingStatePath"></param>
        /// <param name="solutionPath"></param>
        /// <param name="infoPath"></param>
        protected PuzzleSolver(string startingStatePath, string solutionPath, string infoPath)
        {
            StateDataPack data = DataReader.LoadStartingState(startingStatePath);

            SolutionPath  = solutionPath;
            InfoPath      = infoPath;
            DimensionX    = data.DimensionX;
            DimensionY    = data.DimensionY;
            StartingState = new State(DimensionX, DimensionY, data.Grid, DirectionEnum.None, 0, null);
            CurrentState  = StartingState;
            Explored      = new Dictionary <string, int>();
            Visited       = 1;
        }