private static void displayResult(SolverResult result, bool displayAll)
        {
            Console.WriteLine();

            if (displayAll || result.ResultSequence.Count <= RESULT_STATES_PARTLY_DISPLAY_COUNT * 2)
            {
                foreach (var state in result.ResultSequence)
                {
                    GridLogger.Log(result.Height, result.Width, state);
                }
            }
            else
            {
                for (int i = 0; i < RESULT_STATES_PARTLY_DISPLAY_COUNT; i++)
                {
                    GridLogger.Log(result.Height, result.Width, result.ResultSequence[i]);
                }

                Console.WriteLine(".");
                Console.WriteLine(".");
                Console.WriteLine(".");
                Console.WriteLine("Other {0} states.", result.ResultSequence.Count - RESULT_STATES_PARTLY_DISPLAY_COUNT * 2);
                Console.WriteLine(".");
                Console.WriteLine(".");
                Console.WriteLine(".");

                for (int i = result.ResultSequence.Count - RESULT_STATES_PARTLY_DISPLAY_COUNT - 1; i < result.ResultSequence.Count; i++)
                {
                    GridLogger.Log(result.Height, result.Width, result.ResultSequence[i]);
                }
            }
        }
        public static void ProcessSolverResult(SolverResult solverResult)
        {
            Console.WriteLine("Result:");

            if (solverResult == null)
            {
                Console.WriteLine("Didn't find solution in the given iterations.");
            }
            else
            {
                bool listAllPossibilities;
                Console.WriteLine("Solution has {0} steps.", solverResult.ResultSequence.Count);
                Console.WriteLine();

                Console.WriteLine("Applied operators:");
                Console.WriteLine();

                foreach (var op in solverResult.AppliedOperators)
                {
                    Console.WriteLine(op);
                }

                Console.WriteLine();

                while (true)
                {
                    Console.Write("Do you want to list all {0} steps? Y/N ", solverResult.ResultSequence.Count);

                    var input    = Console.ReadLine();
                    var decision = processDecision(input);

                    if (decision == null)
                    {
                        continue;
                    }

                    listAllPossibilities = (bool)decision;
                    break;
                }

                displayResult(solverResult, listAllPossibilities);
            }
        }