public Deskryptor fmax(Dictionary <string, int> czestosc, int nrAtr)
        {
            Deskryptor desk = new Deskryptor();

            desk.nrAtrybutu = nrAtr;
            desk.wartosc    = czestosc.First().Key;
            desk.czestosc   = czestosc.First().Value;
            foreach (var cz in czestosc)
            {
                if (desk.czestosc < cz.Value)
                {
                    desk.czestosc = cz.Value;
                    desk.wartosc  = cz.Key;
                }
            }
            return(desk);
        }
        public Deskryptor fMaxCalosc(string[][] tab, List <Deskryptor> deskP)
        {
            Dictionary <string, int> slownik = new Dictionary <string, int>();
            Deskryptor desk = new Deskryptor();

            desk.czestosc = 0;
            int        nrAtr = 0;
            List <int> pom   = new List <int>();

            foreach (var t in deskP)
            {
                pom.Add(t.nrAtrybutu);
            }
            for (int i = 0; i < tab[0].Length; i++)
            {
                nrAtr   = i;
                slownik = fCzestosc(fKolumna(tab, i));
                if (desk.czestosc < fmax(slownik, nrAtr).czestosc)
                {
                    if (deskP.Count != 0)
                    {
                        if (!pom.Contains(fmax(slownik, nrAtr).nrAtrybutu))
                        {
                            desk.czestosc   = fmax(slownik, nrAtr).czestosc;
                            desk.wartosc    = fmax(slownik, nrAtr).wartosc;
                            desk.nrAtrybutu = fmax(slownik, nrAtr).nrAtrybutu;
                        }
                    }
                    else
                    {
                        desk.czestosc   = fmax(slownik, nrAtr).czestosc;
                        desk.wartosc    = fmax(slownik, nrAtr).wartosc;
                        desk.nrAtrybutu = fmax(slownik, nrAtr).nrAtrybutu;
                    }
                }
            }


            return(desk);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Deskryptor desk = new Deskryptor();
            Dictionary <string, int> slownik      = new Dictionary <string, int>();
            List <Regula3>           reguly       = new List <Regula3>();
            List <Deskryptor>        pDeskryptory = new List <Deskryptor>();

            string[][] test;
            foreach (var decyzje in fUnkialnosc(fKolumna(systemDecyzyjny, ostatni)))
            {
                List <int> maska1 = new List <int>();
                List <int> maska2 = new List <int>();
                foreach (var m in maska(konceptFinall(decyzje)))
                {
                    maska1.Add(m);
                }

                string[][] tb;
                do
                {
                    pDeskryptory.Clear();
                    if (maska1.Count() != konceptFinall(decyzje).Count())
                    {
                        tb   = konceptBezPok(konceptFinall(decyzje), maska1);
                        desk = fMaxCalosc(konceptBezPok(konceptFinall(decyzje), maska1), pDeskryptory);
                    }
                    else
                    {
                        desk = fMaxCalosc(konceptFinall(decyzje), pDeskryptory);
                    }
                    Regula3 r = new Regula3(decyzje, desk);


                    do
                    {
                        if (!r.czyRegulaSprzeczna(systemDecyzyjny))
                        {
                            pDeskryptory.Add(desk);
                            desk = fMaxCalosc(konceptPoPokryciu(konceptFinall(decyzje), maska2), pDeskryptory);
                            r    = dodajDeskryptor(r, desk);
                            maska2.Clear();
                            foreach (var m in maska(konceptFinall(decyzje)))
                            {
                                maska2.Add(m);
                            }
                            maska2 = r.generujPokjrycie(konceptFinall(decyzje), maska2);
                            if (r.czyRegulaSprzeczna(systemDecyzyjny))
                            {
                                r.SupportReguly(systemDecyzyjny);
                                reguly.Add(r);
                                maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                            }
                        }
                        else
                        {
                            r.SupportReguly(systemDecyzyjny);
                            reguly.Add(r);
                            maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                        }
                    } while (!r.czyRegulaSprzeczna(systemDecyzyjny));
                } while (maska1.Count() != 0);
            }
            foreach (var reg in reguly)
            {
                wynik.Text += reg.ToString();
            }
        }
 public Regula3 dodajDeskryptor(Regula3 regula, Deskryptor desk)
 {
     regula.deskryptor.Add(desk);
     return(regula);
 }
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Tablica z wczytanymi danymi dostępna poniżej
            // this.systemDecyzyjny;

            //
            // Przykład konwersji string to double
            string sLiczbaDouble  = "1.5";
            double dsLiczbaDouble = StringToDouble(sLiczbaDouble);

            // Przykład konwersji string to int
            string sLiczbaInt = "1";
            int    iLiczbaInt = StringToInt(sLiczbaInt);

            /****************** Miejsce na rozwiązanie *********************************/



            //string wynik = String.Join(",", koceptFinal(koncept(systemDecyzyjny, "1"), systemDecyzyjny));



            Deskryptor desk = new Deskryptor();
            Dictionary <string, int> slownik      = new Dictionary <string, int>();
            List <Regula>            reguly       = new List <Regula>();
            List <Deskryptor>        pDeskryptory = new List <Deskryptor>();

            string[][] test;
            foreach (var decyzje in fUnkialnosc(fKolumna(systemDecyzyjny, ostatni)))
            {
                List <int> maska1 = new List <int>();
                List <int> maska2 = new List <int>();
                foreach (var m in maska(konceptFinall(decyzje)))
                {
                    maska1.Add(m);
                }

                string[][] tb;
                do
                {
                    pDeskryptory.Clear();
                    if (maska1.Count() != konceptFinall(decyzje).Count())
                    {
                        tb   = konceptBezPok(konceptFinall(decyzje), maska1);
                        desk = fMaxCalosc(konceptBezPok(konceptFinall(decyzje), maska1), pDeskryptory);
                    }
                    else
                    {
                        desk = fMaxCalosc(konceptFinall(decyzje), pDeskryptory);
                    }
                    Regula r = new Regula(decyzje, desk);


                    do
                    {
                        if (!r.czyRegulaSprzeczna(systemDecyzyjny))
                        {
                            pDeskryptory.Add(desk);
                            desk = fMaxCalosc(konceptPoPokryciu(konceptFinall(decyzje), maska2), pDeskryptory);
                            r    = dodajDeskryptor(r, desk);
                            maska2.Clear();
                            foreach (var m in maska(konceptFinall(decyzje)))
                            {
                                maska2.Add(m);
                            }
                            maska2 = r.generujPokjrycie(konceptFinall(decyzje), maska2);
                            if (r.czyRegulaSprzeczna(systemDecyzyjny))
                            {
                                r.SupportReguly(systemDecyzyjny);
                                reguly.Add(r);
                                maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                            }
                        }
                        else
                        {
                            r.SupportReguly(systemDecyzyjny);
                            reguly.Add(r);
                            maska1 = r.generujPokjrycie(konceptFinall(decyzje), maska1);
                        }
                    } while (!r.czyRegulaSprzeczna(systemDecyzyjny));
                } while (maska1.Count() != 0);
            }
            foreach (var reg in reguly)
            {
                wynik.Text += reg.ToString();
            }

            /****************** Koniec miejsca na rozwiązanie ********************************/
        }