예제 #1
0
        public Sudoku(String sudokuNapisem)
        {
            indeks         = -1;
            kolumny        = 9;
            rzedy          = 9;
            tabelaProblemu = new Zmienna[kolumny, rzedy];
            String[] kolejneDane = sudokuNapisem.Split(';');
            for (int i = 0; i < kolumny; i++)
            {
                for (int j = 0; j < rzedy; j++)
                {
                    tabelaProblemu[i, j] = new ZmiennaSudoku(kolejneDane[2][i * 9 + j]);
                }
            }
            ogr = new OgraniczeniaSudoku(this);
            heurystykaDoZmiennych  = new HeurestykaProblemu(this);
            heurystykaDoZmiennych2 = new HeurystykaZmiennej(this);
            heurydtykaDlaWartosci  = new HeurystykaWartosci(this);
            okreslDziedziny();
            okreslDziedziny2();

            /*  Zmienna z = tabelaProblemu[1, 1];
             * for(int i = 0; i < z.dziedzina.Count; i ++)
             * {
             *    Console.Write(z.dziedzina[i] + " ");
             * }
             * Console.WriteLine("");
             * for (int j = 0; j < z.dziedzina2.Count; j++)
             * {
             *    Console.Write(z.dziedzina2[j] + " ");
             * }
             * Console.WriteLine("");*/
        }
 public void wybierzWartosciDlaZmiennej(Zmienna z)
 {
     for (int i = 0; i < 9; i++)
     {
         if (z.dziedzina.Contains(posortowaneWartosci[i]))
         {
             z.dziedzina2.Add(posortowaneWartosci[i]);
         }
     }
 }
예제 #3
0
        public Jolka(String jolkaNapisem, String slowaNapisem)
        {
            String[] kolejneDane = jolkaNapisem.Split('\n');
            kolumny = kolejneDane.Length;
            rzedy   = kolejneDane[0].Length;
            // Console.WriteLine(kolumny + " " + rzedy);
            kolumny--;
            tabelaProblemu = new Zmienna[kolumny, rzedy];

            for (int i = 0; i < kolumny; i++)
            {
                for (int j = 0; j < rzedy; j++)
                {
                    tabelaProblemu[i, j] = new ZmiennaJolka(kolejneDane[i][j]);
                }
            }

            slowa = new List <String>(slowaNapisem.Split('\n'));
            ogr   = new OgraniczeniaJolka(this);
            heurystykaDoZmiennych = new HeurestykaProblemu(this);
            okreslDziedziny();
        }
        public Tuple <Zmienna, Tuple <int, int> > dajZmienna()
        {
            indeksWKwadracie++;
            if (indeksWKwadracie == 9)
            {
                indeksWKwadracie = 0;
                indeksWSudokuOgolnie++;
                if (indeksWSudokuOgolnie == 9)
                {
                    return(null);
                }
                // Console.WriteLine(indeksWSudokuOgolnie);

                indeksWSudoku = posortowaneIndeksy [indeksWSudokuOgolnie];
            }
            int x = (indeksWSudoku / 3) * 3 + indeksWKwadracie / 3;
            int y = (indeksWSudoku % 3) * 3 + indeksWKwadracie % 3;
            //Console.WriteLine(indeksWSudokuOgolnie + " " + indeksWSudoku+ " " + indeksWKwadracie + " " + x + " " + y);
            Zmienna zmiennaNaTeraz = sudoku.tabelaProblemu[x, y];

            return(new Tuple <Zmienna, Tuple <int, int> >(zmiennaNaTeraz, new Tuple <int, int>(x, y)));
        }
        public void ustalDziedzineZmiennejWgHeusrystyki(Zmienna z, int x, int y)
        {
            licznoscWartosciWRzedach            = new List <int>(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            licznoscWartosciWRzedachPosortowana = new List <int>(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0 });
            posortowaneWartosci = new List <int>();
            wypelnijListy(x, y);
            licznoscWartosciWRzedachPosortowana.Sort();
            sortujWartosci();
            wybierzWartosciDlaZmiennej(z);

            /* if(x == 3 && y == 4)
             * {
             *   for (int i = 0; i < 9; i++)
             *   {
             *       Console.Write(licznoscWartosciWRzedach[i] + " ");
             *   }
             *   Console.WriteLine("");
             *   for (int j = 0; j < 9; j++)
             *   {
             *       Console.Write(posortowaneWartosci[j] + " ");
             *   }
             *   Console.WriteLine("");
             * }*/
        }