public Grid GetNewInitialSolution(Grid initialGrid)
        {
            Random r = new Random();
            Grid g = new Grid(initialGrid);
            for (int i = 0; i < InitiPopulationIterationCount;i++ )
            {
                var n = r.Next(1, g.Size+1);
                var row = r.Next(0, g.Size);
                var col = r.Next(0, g.Size);
                if (g.Get(row, col) != 0)
                {
                    g.Place(n,row,col);

                }
            }
            return g;
        }
        public int GetNextPosition(Grid g)
        {
            int min = int.MaxValue;
            int minPos = -1;
            for(int i = 0; i < g.Size; i++)
                for (int j = 0; j < g.Size; j++)
                {
                    if (g.Get(i, j) != 0)
                        continue;
                    var l = g.GetAvailableNumbersFor(i, j);
                    if (l.Count < min)
                    {
                        min = l.Count;
                        minPos = i*g.Size + j;

                    }
                    if (min == 1)
                        return minPos;
                }

            return minPos;
        }
 public void TestGet()
 {
     Grid g = new Grid(9,0);
     g.Place(3,1,1);
     Assert.AreEqual(3,g.Get(1,1));
 }