public ResultsWindow(Stats stat, List<Node> results, EightSquares eightPuzzle, int expanded, int total)
        {
            InitializeComponent();
            this.eightPuzzle = eightPuzzle;
            this.stat = stat;
            expandedCount.Text += expanded;
            genCount.Text += total;
            movesMade.Text += results.Last().gValue;
            avgBranchingFactor.Text += Math.Round((Double)total / expanded, 3);
            Double temp = (double)1 / (double)results.Last().gValue;
            effBranchingFactor.Text += Math.Round(Math.Pow(expanded, temp), 3);
            List<Data> source = new List<Data>();
            foreach (Node n in results)
            {
                source.Add(new Data()
                {
                    hValue = n.hValue,
                    gValue = n.gValue,
                    fValue = n.fValue,
                    action = n.action,
                    state = stringifyState(n),
                    thisNode = n
                });

                actionsToGoal.Text += (n.action != String.Empty && n.gValue != results.Count - 1) ? String.Format("{0}, ", n.action) : n.action;
            }
            grid.ItemsSource = source;
            //grid.DataContext = results[0];
        }
 private void initializeStats()
 {
     stats = new Stats();
     optionsContainer.DataContext = stats;
     stats.misplacedTile = Heuristics.misplacedTileHeuristic(currentNode);
     stats.manhattanDistance = Heuristics.manhattanDistanceHeuristic(currentNode);
     stats.manhattanDistancePlusReversal = Heuristics.manhattanDistanceHeuristicPlusReversalPenalty(currentNode);
 }